求一个简单程序功能 功能要求 程序随机给出两个数字 第一次猜对 加五分 第二次猜对加三分 第三次加两分 当输入999时程序退出 大概是这个意思 能写出大概的代码就好 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 很简单,随机产生两个100以内的数 : int r1 = (int) (Math.random() * 100); int r2 = (int) (Math.random() * 100);然后用switch 方法写出五个状态来 case 1: System.out.println("输入第一次要猜的数字 ");if (var == r1 || var == r2) { point += 5 ;} else { point = point; } System.out.println("输出分数: " + point);同理 case 2 和 3;case 4 :System.out.println("查看两个随机数的值 "); System.out.println(r1); System.out.println(r2);case 999 :System.out.println("退出 "); System.exit(0); break; import java.util.Random;public class GuessAction { private int[] nums = new int[2];// 声明一个数组用来存放两个随机数 private int count = 1;// 声明一个计数器记录已猜的次数 public int[] getNums() { return nums; } public GuessAction() { super(); new GuessAction(10);// 默认为随机数[0~10) } public GuessAction(int n) {// 取随机产生范围 Random random = new Random();// 实例化随机数类 int randomNum1 = random.nextInt(n);// 将随机产生 和{0~n)的数赋给randomNum1 int randomNum2 = random.nextInt(n);// 将随机产生 和{0~n)的数赋给randomNum2 this.nums[0] = randomNum1;// 给数组赋值 this.nums[1] = randomNum2; } /** * 娄判断结果 * * @param num1 * ,num2 要判断的数1和数2 * @return 表示得分和次数,-11表示猜的第一个数和第二个数太小,-12表示猜的第一个数太小但第二个数太大, * -21表示猜的第一个数太大但第二个数太小 ,-22 表示猜的第一个数太大且第二个数太大 ,-01 * 表示第一个数正确但第二个输入的数太小 ,-02 表示第一个数正确第二个数太大 ,-10 表示第一个数太小第二个数太小 ,-20 * 表示第一个数太大但第二个数正确 ,输入 是999返回0,猜对返回分数 */ public int[] judge(int num1, int num2) { int[] result = new int[2];// 声明一个返回数组,第一个存得分,第二个存已猜次数 if (999 != num1 && 999 != num2) { if (num1 < this.nums[0]) { if (num2 < this.nums[1]) { result[0] = -11; this.count++; } else if (num2 > this.nums[1]) { result[0] = -12; this.count++; } else { result[0] = -10; this.count++; } } else if (num1 > this.nums[0]) { if (num2 < this.nums[1]) { result[0] = -21; this.count++; } else if (num2 > this.nums[1]) { result[0] = -22; this.count++; } else { result[0] = -20; this.count++; } } else if (num1 == this.nums[0]) { if (num2 < this.nums[1]) { result[0] = -01; this.count++; } else if (num2 > this.nums[1]) { result[0] = -02; this.count++; } else { if (this.count == 1) { result[0] = 5; } else if (this.count == 2) { result[0] = 3; } else { result[0] = 2; } } } result[1] = this.count; } return result; }}PS:这只是一个功能模块.可以自己测下. import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JTextField;import com.ajijan.action.GuessAction;public class GuessFrame extends JFrame { private final JPanel pnlMain = new JPanel(); private final JLabel lblTitle = new JLabel("欢迎参加猜数游戏"); private final JLabel lblScore = new JLabel("当前得分:0"); private final JLabel lblProm = new JLabel("这里显示提示信息"); private final JLabel lblNum = new JLabel("当前已猜次数:0"); private final JLabel lblFirst = new JLabel("您猜的第一个数:"); private final JLabel lblSeconde = new JLabel("您猜的第二个数:"); private final JTextField txtFirst = new JTextField(10); private final JTextField txtSeconde = new JTextField(10); private final JButton btnGuess = new JButton("开始猜数"); private final GuessAction guess = new GuessAction(); private static final long serialVersionUID = -1099782742764965582L; public GuessFrame() { initComponents(); } private void initComponents() { // set up main panel pnlMain.setLayout(null); pnlMain.add(lblTitle); lblTitle.setBounds(130, 10, 150, 30); pnlMain.add(lblScore); lblScore.setBounds(10, 40, 80, 30); pnlMain.add(lblNum); lblNum.setBounds(180, 40, 150, 30); pnlMain.add(lblFirst); lblFirst.setBounds(10, 70, 100, 30); pnlMain.add(txtFirst); txtFirst.setBounds(110, 70, 50, 30); pnlMain.add(lblSeconde); lblSeconde.setBounds(180, 70, 100, 30); pnlMain.add(txtSeconde); txtSeconde.setBounds(280, 70, 50, 30); pnlMain.add(btnGuess); btnGuess.setBounds(30, 120, 100, 30); btnGuess.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { try { int num1 = Integer.parseInt(txtFirst.getText().trim()); int num2 = Integer.parseInt(txtSeconde.getText().trim()); int[] result = guess.judge(num1, num2); if (-11 == result[0]) { lblProm.setText("第一个数太小,第二个数太小"); lblNum.setText("当前已猜次数:" + result[1]); } else if (-12 == result[0]) { lblProm.setText("第一个数太小,第二个数太大"); lblNum.setText("当前已猜次数:" + result[1]); } else if (-10 == result[0]) { lblProm.setText("第一个数太小,第二个数正确"); lblNum.setText("当前已猜次数:" + result[1]); txtSeconde.setEnabled(false); } else if (-21 == result[0]) { lblProm.setText("第一个数太大,第二个数太小"); lblNum.setText("当前已猜次数:" + result[1]); } else if (-22 == result[0]) { lblProm.setText("第一个数太大,第二个数太大"); lblNum.setText("当前已猜次数:" + result[1]); } else if (-20 == result[0]) { lblProm.setText("第一个数太大,第二个数正确"); lblNum.setText("当前已猜次数:" + result[1]); txtSeconde.setEnabled(false); } else if (-01 == result[0]) { lblProm.setText("第一个数正确,第二个数太小"); lblNum.setText("当前已猜次数:" + result[1]); txtFirst.setEnabled(false); } else if (-02 == result[0]) { lblProm.setText("第一个数正确,第二个数太大"); lblNum.setText("当前已猜次数:" + result[1]); txtFirst.setEnabled(false); } else { lblProm.setText("恭喜你,猜对啦,真厉害!"); lblScore.setText("当前得分:" + result[0]); lblNum.setText("当前已猜次数:" + result[1]); txtFirst.setEnabled(false); txtSeconde.setEnabled(false); } } catch (NumberFormatException e1) { JOptionPane.showMessageDialog(null, "必须输入整数!"); } } }); pnlMain.add(lblProm); lblProm.setBounds(150, 120, 250, 30); // set up main frame setContentPane(pnlMain); setTitle("猜数游戏"); setSize(400, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); }}PS:这是带界面的测试类,不过每次只能猜一次, 要搞好点可以加一个"重新开始"和"难度选择"菜单.应该比较好实现! private安全性 HashMap可以这样遍历么? IDEA里如何增加控件 关于JAR的解压问题 JAVA中类型转换的困惑 关于用java程序压缩jar 能否学习Java? 请帮忙分析一下这段代码。 纯java怎么实现三层结构,请教高手!!!! 怎么实现jsp中的table框中的数据鼠标移到其中一行时在行尾显示按钮,移开按钮隐藏 关于异常的问题 好囧,本来想让窗体标题显示窗体运行时间的,后来被我弄出死循环了
int r1 = (int) (Math.random() * 100);
int r2 = (int) (Math.random() * 100);
然后用switch 方法写出五个状态来 case 1: System.out.println("输入第一次要猜的数字 ");if (var == r1 || var == r2) {
point += 5 ;}
else {
point = point; }
System.out.println("输出分数: " + point);
同理 case 2 和 3;
case 4 :System.out.println("查看两个随机数的值 ");
System.out.println(r1);
System.out.println(r2);
case 999 :System.out.println("退出 ");
System.exit(0);
break;
private int[] nums = new int[2];// 声明一个数组用来存放两个随机数
private int count = 1;// 声明一个计数器记录已猜的次数 public int[] getNums() {
return nums;
} public GuessAction() {
super();
new GuessAction(10);// 默认为随机数[0~10)
} public GuessAction(int n) {// 取随机产生范围
Random random = new Random();// 实例化随机数类
int randomNum1 = random.nextInt(n);// 将随机产生 和{0~n)的数赋给randomNum1
int randomNum2 = random.nextInt(n);// 将随机产生 和{0~n)的数赋给randomNum2
this.nums[0] = randomNum1;// 给数组赋值
this.nums[1] = randomNum2;
} /**
* 娄判断结果
*
* @param num1
* ,num2 要判断的数1和数2
* @return 表示得分和次数,-11表示猜的第一个数和第二个数太小,-12表示猜的第一个数太小但第二个数太大,
* -21表示猜的第一个数太大但第二个数太小 ,-22 表示猜的第一个数太大且第二个数太大 ,-01
* 表示第一个数正确但第二个输入的数太小 ,-02 表示第一个数正确第二个数太大 ,-10 表示第一个数太小第二个数太小 ,-20
* 表示第一个数太大但第二个数正确 ,输入 是999返回0,猜对返回分数
*/ public int[] judge(int num1, int num2) {
int[] result = new int[2];// 声明一个返回数组,第一个存得分,第二个存已猜次数
if (999 != num1 && 999 != num2) { if (num1 < this.nums[0]) {
if (num2 < this.nums[1]) {
result[0] = -11;
this.count++;
} else if (num2 > this.nums[1]) {
result[0] = -12;
this.count++;
} else {
result[0] = -10;
this.count++;
}
} else if (num1 > this.nums[0]) {
if (num2 < this.nums[1]) {
result[0] = -21;
this.count++;
} else if (num2 > this.nums[1]) {
result[0] = -22;
this.count++;
} else {
result[0] = -20;
this.count++;
}
} else if (num1 == this.nums[0]) {
if (num2 < this.nums[1]) {
result[0] = -01;
this.count++;
} else if (num2 > this.nums[1]) {
result[0] = -02;
this.count++;
} else {
if (this.count == 1) {
result[0] = 5;
} else if (this.count == 2) {
result[0] = 3;
} else {
result[0] = 2;
}
}
}
result[1] = this.count;
}
return result;
}}
PS:这只是一个功能模块.可以自己测下.
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;import com.ajijan.action.GuessAction;public class GuessFrame extends JFrame {
private final JPanel pnlMain = new JPanel();
private final JLabel lblTitle = new JLabel("欢迎参加猜数游戏");
private final JLabel lblScore = new JLabel("当前得分:0");
private final JLabel lblProm = new JLabel("这里显示提示信息");
private final JLabel lblNum = new JLabel("当前已猜次数:0");
private final JLabel lblFirst = new JLabel("您猜的第一个数:");
private final JLabel lblSeconde = new JLabel("您猜的第二个数:");
private final JTextField txtFirst = new JTextField(10);
private final JTextField txtSeconde = new JTextField(10);
private final JButton btnGuess = new JButton("开始猜数");
private final GuessAction guess = new GuessAction(); private static final long serialVersionUID = -1099782742764965582L; public GuessFrame() {
initComponents(); } private void initComponents() {
// set up main panel
pnlMain.setLayout(null);
pnlMain.add(lblTitle);
lblTitle.setBounds(130, 10, 150, 30);
pnlMain.add(lblScore);
lblScore.setBounds(10, 40, 80, 30);
pnlMain.add(lblNum);
lblNum.setBounds(180, 40, 150, 30);
pnlMain.add(lblFirst);
lblFirst.setBounds(10, 70, 100, 30);
pnlMain.add(txtFirst);
txtFirst.setBounds(110, 70, 50, 30);
pnlMain.add(lblSeconde);
lblSeconde.setBounds(180, 70, 100, 30);
pnlMain.add(txtSeconde);
txtSeconde.setBounds(280, 70, 50, 30);
pnlMain.add(btnGuess);
btnGuess.setBounds(30, 120, 100, 30);
btnGuess.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
try {
int num1 = Integer.parseInt(txtFirst.getText().trim());
int num2 = Integer.parseInt(txtSeconde.getText().trim());
int[] result = guess.judge(num1, num2);
if (-11 == result[0]) {
lblProm.setText("第一个数太小,第二个数太小");
lblNum.setText("当前已猜次数:" + result[1]);
} else if (-12 == result[0]) {
lblProm.setText("第一个数太小,第二个数太大");
lblNum.setText("当前已猜次数:" + result[1]);
} else if (-10 == result[0]) {
lblProm.setText("第一个数太小,第二个数正确");
lblNum.setText("当前已猜次数:" + result[1]);
txtSeconde.setEnabled(false);
} else if (-21 == result[0]) {
lblProm.setText("第一个数太大,第二个数太小");
lblNum.setText("当前已猜次数:" + result[1]);
} else if (-22 == result[0]) {
lblProm.setText("第一个数太大,第二个数太大");
lblNum.setText("当前已猜次数:" + result[1]);
} else if (-20 == result[0]) {
lblProm.setText("第一个数太大,第二个数正确");
lblNum.setText("当前已猜次数:" + result[1]);
txtSeconde.setEnabled(false);
} else if (-01 == result[0]) {
lblProm.setText("第一个数正确,第二个数太小");
lblNum.setText("当前已猜次数:" + result[1]);
txtFirst.setEnabled(false);
} else if (-02 == result[0]) {
lblProm.setText("第一个数正确,第二个数太大");
lblNum.setText("当前已猜次数:" + result[1]);
txtFirst.setEnabled(false);
} else {
lblProm.setText("恭喜你,猜对啦,真厉害!");
lblScore.setText("当前得分:" + result[0]);
lblNum.setText("当前已猜次数:" + result[1]);
txtFirst.setEnabled(false);
txtSeconde.setEnabled(false);
}
} catch (NumberFormatException e1) {
JOptionPane.showMessageDialog(null, "必须输入整数!");
}
}
});
pnlMain.add(lblProm);
lblProm.setBounds(150, 120, 250, 30); // set up main frame
setContentPane(pnlMain);
setTitle("猜数游戏");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false); }
}
PS:这是带界面的测试类,不过每次只能猜一次, 要搞好点可以加一个"重新开始"和"难度选择"菜单.应该比较好实现!