import java.util.*;
public class number_guassing_game{
private static int a = 0;
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int number=(int)(Math.random()*100+1);
int count=0;
boolean flag = true;
do {
int a = in.nextInt();
count+=1;
if(a>number) {
System.out.println("smaller!");
}else if(a<number) {
System.out.println("bigger!");
}
}while(a != number);
System.out.println("congratulations!"+" You have guessed "+count+" times!");
}
}
显然答案是48,但没有循环并打印表达式。
答案 0 :(得分:7)
循环条件
while(a != number);
看不到将输入读取到的局部变量:
int a = in.nextInt();
它看到初始化为0
的静态变量永远不变:
private static int a = 0;
因此循环永远不会终止。
您应该更改
int a = in.nextInt();
到
a = in.nextInt();
哦,a
没有理由static
。只要它在循环外(和循环之前)声明,它就可以是main
方法的局部变量。
答案 1 :(得分:2)
您在循环内部定义的a
从其外部遮盖了a
。该a
从未更新,因此,只有在您输入0
(原始值a
初始化时),循环才会终止。为了避免这种情况,只需使用相同的a
而不是声明一个新变量:
a = in.nextInt(); // no datatype here, since you aren't defining a new variable