Can';t退出do while循环,;甚至表达都是错误的 import java.util.*; 公开课编号语言游戏{ 私有静态int a=0; 公共静态void main(字符串[]args){ 扫描仪输入=新扫描仪(系统输入); 整数=(int)(Math.random()*100+1); 整数计数=0; 布尔标志=真; 做{ int a=in.nextInt(); 计数+=1; 如果(a>数字){ System.out.println(“更小的!”); }否则,如果(a

Can';t退出do while循环,;甚至表达都是错误的 import java.util.*; 公开课编号语言游戏{ 私有静态int a=0; 公共静态void main(字符串[]args){ 扫描仪输入=新扫描仪(系统输入); 整数=(int)(Math.random()*100+1); 整数计数=0; 布尔标志=真; 做{ int a=in.nextInt(); 计数+=1; 如果(a>数字){ System.out.println(“更小的!”); }否则,如果(a,java,Java,while(a != number); 看不到将输入读入的局部变量: int a = in.nextInt(); 它会看到静态变量被初始化为0,并且永远不会更改: private static int a = 0; 因此,循环永远不会终止 你应该改变 int a = in.nextInt(); 到 哦,a没有理由是static。它可以是main方法的局部变量,只要在外部(和之前)声明循环。您在循环内部定义的a会从循环外部阴影a。该a永远不会更新,因此只有在输入0时循环才会终止(原始值a初

while(a != number);
看不到将输入读入的局部变量:

int a = in.nextInt();
它会看到静态变量被初始化为
0
,并且永远不会更改:

private static int a = 0;
因此,循环永远不会终止

你应该改变

int a = in.nextInt();


哦,
a
没有理由是
static
。它可以是
main
方法的局部变量,只要在外部(和之前)声明循环。

您在循环内部定义的
a
会从循环外部阴影
a
。该
a
永远不会更新,因此只有在输入
0
时循环才会终止(原始值
a
初始化为).为了避免这种情况,只需使用相同的
a
,而不是声明新变量:

a = in.nextInt(); // no datatype here, since you aren't defining a new variable

我知道写可读代码很重要,这个程序只是我朋友学习基本语法的一个小练习。谢谢你的提醒。
a = in.nextInt(); // no datatype here, since you aren't defining a new variable