在 java 中跳出这个无限循环的方法是什么?
what is the way to get out of this infinite loop in java?
public class checkdivi {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
if(sc.hasNext()){
int T=sc.nextInt();
int i=1;
while(i <= T){
int temp=T;
while((i%2) ==0 && (temp%2) ==0){
temp=temp/2;
i=i/2;
System.out.println("ok"+i);
if(i%2 !=0 || temp%2 !=0)
System.out.println("oh"+i);
break;
}
System.out.println(""+i);
i=i+1;
System.out.println("yeah"+i);
}
}
}}
//当输入为 12 时,这段代码会无限打印下面的行。为什么 i 的值一次又一次地变为 1?
ok1
oh1
1
yeah2
您将 i
设置为 i/2
,而不是在嵌套 while 循环中使用临时变量,因此每次 (i%2)==0 && (temp%2)==0
都会返回;由于您最初将 i
设置为 1,因此只要 i
为 2,这将始终发生,尽管只有在输入为偶数时才会发生。要解决此问题,请使用第二个临时变量来存储 i
.
public class checkdivi {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
if(sc.hasNext()){
int T=sc.nextInt();
int i=1;
while(i <= T){
int temp=T;
while((i%2) ==0 && (temp%2) ==0){
temp=temp/2;
i=i/2;
System.out.println("ok"+i);
if(i%2 !=0 || temp%2 !=0)
System.out.println("oh"+i);
break;
}
System.out.println(""+i);
i=i+1;
System.out.println("yeah"+i);
}
}
}}
//当输入为 12 时,这段代码会无限打印下面的行。为什么 i 的值一次又一次地变为 1?
ok1
oh1
1
yeah2
您将 i
设置为 i/2
,而不是在嵌套 while 循环中使用临时变量,因此每次 (i%2)==0 && (temp%2)==0
都会返回;由于您最初将 i
设置为 1,因此只要 i
为 2,这将始终发生,尽管只有在输入为偶数时才会发生。要解决此问题,请使用第二个临时变量来存储 i
.