猜数游戏

基本功能:系统随机产生一个1到100间的整数,要求用户从键盘输入一个整数,如果数值小于随机值,系统提示“小了”;如果数字大于随机值,,则提示“大了”;如果猜中,提示“成功... 基本功能:系统随机产生一个1到100间的整数,要求用户从键盘输入一个整数,如果数值小于随机值,系统提示“小了”;如果数字大于随机值,,则提示“大了”;如果猜中,提示“成功”。如果用户输入非法数据,系统给予“输入有误的”提示。

要求:
1、设计图形用户界面
2、时钟计时或者限定时间,并以进度条显示剩余时间
3、显示历史数据,为用户提供参考
4、设置计数器,显示猜数次数

猜数游戏示例:

import java.awt.*;
import javax.swing.*;

public class Test{
public static void main(String args[]){
int rnd=(int)(Math.random()*100)+1;
int counter=1;

while(true) {
String str=javax.swing.JOptionPane.showInputDialog("请输入数据:");
char[] sarray =str.toCharArray();
for(int c=0;c<sarray.length;c++)
if(!Character.isDigit(sarray[c])) {
javax.swing.JOptionPane.showMessageDialog(null,"错误输入!");
System.exit(0);
}

int i=Integer.parseInt(str);

if(i<rnd)
javax.swing.JOptionPane.showMessageDialog(null,"小了");
else if(i>rnd)
javax.swing.JOptionPane.showMessageDialog(null,"大了");
else {
javax.swing.JOptionPane.showMessageDialog(null,"成功!\n你猜了 "+ counter + " 次!");
System.exit(0);
}
counter++;
}
}
}

这个程序的设计还不是很合理,也不够健壮。若单击“确定”以外的按钮,或者未输入数据而单击“确定”按钮,程序会出现异常情况。

=================================================================

求教:要怎样改才合理呢?
展开
 我来答
百度网友6d50c2203
2007-05-11 · TA获得超过301个赞
知道小有建树答主
回答量:468
采纳率:0%
帮助的人:322万
展开全部
偶也是初学Java,但楼上的情况偶也遇过~
偶当时的解决方法是:
单独写一个getNumber方法,并且可以抛出一个自定义异常UserCancelException表示用户点击了“确定”之外的按钮,然后交给主程序决定是否退出
(顺道一说,已经写了import javax.swing.*,那后面就不需要写成javax.swing.JOptionPane,直接写JOptionPane就行了)

大概代码如下
import javax.swing.*;

class Demo {
private static int getNumber() throws UserCancelException{
for(;;) { //建立死循环,当数据无效时再次提示输入
String str = JOptionPane.showInputDialog("请输入数据:");

//若没点确定,showInputDialog会返回一个null
if (str == null) throw new UserCancelException();

if (str.equals("")) { //判断是否空
//单纯显示信息,用showMessageDialog方法
JOptionPane.showMessageDialog(null, "不能为空!","错误", JOptionPane.ERROR_MESSAGE);
} else {
try {
int num = Integer.parseInt(str); //格式有效性交给parseInt去判断,它会抛出NumberFormatException
return num;
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(null, "请输入正确数值!", "错误", JOptionPane.ERROR_MESSAGE);
}
}
}
}

public static void main(String[] args) {
try {
System.out.println(getNumber());
} catch(UserCancelException ex) {
//捕捉到UserCancelException的话,说明用户想退出游戏
//当然也可以在getNumber中捕获此异常并退出,只是通常
//不会在子函数里写退出语句
System.exit(0);
}

}
}

//自定义的异常
class UserCancelException extends Exception {
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
荣半雪鲜娇
2019-06-28 · TA获得超过3万个赞
知道大有可为答主
回答量:9935
采纳率:26%
帮助的人:742万
展开全部
72,72,如果是这两个数,那么第三人就有144,0两种可能,而如果是0的话,其他两人就很容易知道自己帽上的数了,所以0舍去,只剩下了144
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式