类的默认方法,所
3
请使用NetBeans打开考生文件夹下的项目Java_3,本题的功能是利用switch语句完成骰子游戏。调试
运行后,程序显示小程序和输入框如下:
由于 Java_3.java 文件不完整, 请在注释行"//*********Found*********"下一行语句的下划线地 方填入正确内容,然后删除下划线,请勿删除注释行或其他已有语句内容。存盘时不得改变原有文件的文 件名及存放目录。 解析: 本题考查的是事件监听。 1)事件监听者实现监听需要实现"ActionListener"接口; 2)程序要通知"监听者"需要监听的组件,这个过程称为"注册"。第二空需要填写的是监听对象的类 this; 3)第三空的语句是使用setText()方法设置文本框中的文本,在此之前,需要将int型的变量workSum 转换为string类型; 具体程序如下: import java.awt.*; import java.awt.event.*; import javax.swing.*; //*********Found********** public class Java_3 extends JApplet implements ActionListener { //扔两个骰子的游戏开始状态 final int WON = 0, LOST = 1, CONTINUE = 2; //程序其他变量初始化 boolean firstRoll = true; int sumOfDice = 0; int myPoint = 0; //图形用户界面构件 JLabel die1Label, die2Label, sumLabel, pointLabel; JTextField firstDie, secondDie, sum, point; JButton roll; //设置图形用户界面构件 public void init(){ Container c = getContentPane(); c.setLayout( new FlowLayout() ); die1Label = new JLabel( "骰子1" ); int gameStatus = CONTINUE; //第1次旋转为true //骰子之和 //第1次旋转时,如没有win/loss //游戏还没有结束
c.add( die1Label ); firstDie = new JTextField( 10 ); firstDie.setEditable( false ); c.add( firstDie ); die2Label = new JLabel( "骰子2" ); c.add( die2Label ); secondDie = new JTextField( 10 ); secondDie.setEditable( false ); c.add( seco
ndDie ); sumLabel = new JLabel( "两个骰子数之和是" ); c.add( sumLabel ); sum = new JTextField( 10 ); sum.setEditable( false ); c.add( sum ); pointLabel = new JLabel( "点是" ); c.add( pointLabel ); point = new JTextField( 10 ); point.setEditable( false ); c.add( point ); roll = new JButton( "旋转骰子" ); //*********Found********** roll.addActionListener( this ); c.add( roll ); } //按钮压下时,调用的方法 public void actionPerformed( ActionEvent e ){ play(); } //处理一个骰子旋转 public void play(){ if ( firstRoll ) { sumOfDice = rollDice(); switch ( sumOfDice ) { case 7: case 11: gameStatus = WON; point.setText( "" ); break; case 2: case 3: case 12: //旋转第1次时输 gameStatus = LOST; point.setText( "" ); //清除点的原文域 //清除点的原文域 //在第1次旋转时赢 //骰子第1次旋转
break; default: gameStatus = CONTINUE; myPoint = sumOfDice; point.setText( Integer.toString( myPoint ) ); firstRoll = false; break; } } else { sumOfDice = rollDice(); if ( sumOfDice == myPoint ) gameStatus = WON; else if ( sumOfDice == 7 ) gameStatus = LOST; } if ( gameStatus == CONTINUE ) showStatus( "再旋转" ); else { if ( gameStatus == WON ) showStatus( "玩家赢" + "再旋转骰子继续玩" ); else showStatus( "玩家输 " + "再旋转骰子继续玩" ); firstRoll = true; } } //旋转骰子方法 public int rollDice(){ int die1, die2, workSum; die1 = 1 + ( int ) ( Math.random() * 6 ); die2 = 1 + ( int ) ( Math.random() * 6 ); workSum = die1 + die2; firstDie.setText( Integer.toString( die1 ) ); secondDie.setText( Integer.toString( die2 ) ); //*********Found********** sum.setText( Integer.toString( workSum ) ); return workSum; } } //旋转数之和为7是输 // win by making point //存储点