这是小弟自己写的java猜数字小游戏,可是最後怎麼样都不会再猜错5次后结束,想请大神知道一下到底错在哪里

publicstaticvoid猜数字游戏(){Scanners1=newScanner(System.in);intran,input=0,n=0,x=1,y=100;... public static void 猜数字游戏() {
Scanner s1 = new Scanner(System.in);
int ran, input = 0, n = 0, x = 1, y = 100;
System.out.println("请输入一个1-100内的数字,你一共有5次机会");
System.out.println(x + "-" + y + "===>");
ran = (int) (Math.random() * 100) + 1;

do {
input = s1.nextInt();
for (; n <= 5; n++) {

if (input > 100 || input < 1) {
System.out.println("你输入的数字超过1-100的范围请重新输入");
break;
}
if (input > ran) {
y = input;
System.out.println("猜大了");
System.out.println(x + "-" + y + "===>");
break;
}
if (input < ran) {
x = input;
System.out.println("猜小了");
System.out.println(x + "-" + y + "===>");
break;
}

}

} while (ran != input);
System.out.println("已经" + n + "次");
System.out.println("你好笨,都猜错了!");
if (ran == input) {
System.out.println("恭喜你,你猜对了!");
System.out.println("你一共猜了" + n + "次");
return;
}
}

}
顺道麻烦大神们 可以指导小弟,为这麼这麼写有错,以及如何修改,还有如此修改的原因,谢谢大神
另外小弟是刚学java
展开
 我来答
哈尔滨市南岗区爱尚职
2017-05-23 · 做品质教育,用事实说话
哈尔滨市南岗区爱尚职
爱尚实训成立于2010年,总部设立在软件外包名城—大连,并在哈尔滨和沈阳设有分校。爱尚实训专注于IT行业精英的培养,打造高端IT技能实训品牌。
向TA提问
展开全部

这段程序有这么几个问题:

  1. 语法报错,编译不能通过,不能通过的原因是:

    for (n=0; n <= 5; n++) 被您写成了for (; n <= 5; n++)


  2. 随机数的产生:您是想产生一个1~100之间的整数,用Math.random()是可以的,但是

    应该,ran = (int) (Math.round(Math.random() * 99)) + 1;  乘以100的话,最大数越界了,具体请参考Math.round的详解,如果看不懂这个解释,可以编写一个测试方法测试

  3. 思路的问题,外层do..while循环里面,就是控制循环是否执行,里面就不要再嵌套for循环了,难道每次执行do..while循环的时候,你都想再判断5次?正确的思路:

    设置是否猜对的布尔值 flag=false;  //默认没猜对

    do{

    //1.获取键盘输入

    //2. 比较数据,如果猜对了flag=true

    //3. 次数计数器+1

    }while(循环执行的条件:次数计数器<=5 &&数字没匹配对 即flag=false )

    当跳出循环时候有两种情况,第一种情况次数>5,第二种,匹配对了(flag=true),可以在循环的时候设置一个布尔变量(flag),初始值为false,如果匹配对了,这个布尔变量(true),跳出循环的时候就根据这个布尔变量的值来判断是否曾经在循环体内匹配对了

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式