为什么当我输入不是正确的数,会反复打印

为什么当我输入不是正确的数,会反复打印

package com.imooc.flow1;


import java.util.Scanner;


public class GuessDemo {


public static void main(String[] args) {

// TODO Auto-generated method stub

int number=6;

int guess;

System.out.println("猜介于1-10的数");

Scanner sc=new Scanner(System.in);

guess=sc.nextInt();

do {

System.out.println("请输入:");

if(guess<number) {

System.out.println("too small");

}

else if(guess>number) {

System.out.println("too big");

}

}while(number!=guess);

System.out.println("Correct");

}


}


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

你的guess=sc.nextInt();语句在do-while循环之外,所以实际上guess的值在第一次键盘输入后一直没有改变,这样子相当于形成了死循环

  • Krabs_ #1
    把 Scanner sc=new Scanner(System.in); guess=sc.nextInt(); 写进do-while循环里,就可以解决了,也就是写在System.out.println("请输入:");的下一行
    2020-06-19 01:29:44
好帮手慕小班 2020-06-19 11:08:04

同学你好,楼上同学的说法是正确的,同学可以将guess=sc.nextInt();放在循环中,每次判断都是新输入的数据,但是Scanner对象可以只创建一次,放在循环外面,比如:

import java.util.Scanner;
public class GuessDemo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int number=6;
		int guess;
		System.out.println("猜介于1-10的数");
		Scanner sc=new Scanner(System.in);				
		do {
			System.out.println("请输入:");
			guess=sc.nextInt();
			if(guess<number) {
				System.out.println("too small");
			}
			else if(guess>number) {
				System.out.println("too big");
			}
		}while(number!=guess);
		System.out.println("Correct");
	}
}

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师