当我进入循环时,我无法退出 import java.util.*; 公共类ConvertBinaryToInteger{ 公共静态void main(字符串[]args){ 扫描仪扫描=新扫描仪(System.in); 最终字符串EXIT=“EXIT”; println(“此程序将二进制转换为整数。”); System.out.println(“输入“+EXIT+”退出程序,按Enter继续”); String word=scan.nextLine(); 而(!word.equals(EXIT)){ 而(!word.equals(EXIT)){ 布尔有效=假; while(!valid){ System.out.println(“输入二进制数:”); String binary=scan.next(); boolean isBinary=true;//首先将“binary”字符串转换为字符数组,并检查每个字符是零还是一 char[]bits=binary.toCharArray(); 对于(int j=0;j
当我进入循环时,我无法退出 import java.util.*; 公共类ConvertBinaryToInteger{ 公共静态void main(字符串[]args){ 扫描仪扫描=新扫描仪(System.in); 最终字符串EXIT=“EXIT”; println(“此程序将二进制转换为整数。”); System.out.println(“输入“+EXIT+”退出程序,按Enter继续”); String word=scan.nextLine(); 而(!word.equals(EXIT)){ 而(!word.equals(EXIT)){ 布尔有效=假; while(!valid){ System.out.println(“输入二进制数:”); String binary=scan.next(); boolean isBinary=true;//首先将“binary”字符串转换为字符数组,并检查每个字符是零还是一 char[]bits=binary.toCharArray(); 对于(int j=0;j,java,loops,infinite-loop,Java,Loops,Infinite Loop,valid从不更新。如果他们想退出,请将valid设置为true,并更新word的值 正如@AnthonyGrist所指出的,完全删除while(!valid)循环也将解决此问题。检查 它正在运行 PS:删除!有效条件也不会导致程序在进入退出时终止。我试过了 问题在于,您正在显示消息并立即写入scan.nextline(),它接受一个空白,无论是否设置为true,这都不是要退出的且也是有效的。当输入单词.equals时,它将始终初始化为false(…条件。不确定嵌套的while循环是关于什么的。
valid
从不更新。如果他们想退出,请将valid
设置为true
,并更新word
的值
正如@AnthonyGrist
所指出的,完全删除while(!valid)
循环也将解决此问题。检查
它正在运行
PS:删除!有效条件也不会导致程序在进入退出时终止。我试过了
问题在于,您正在显示消息并立即写入scan.nextline(),它接受一个空白,无论是否设置为true,这都不是要退出的且也是有效的。当输入单词.equals时,它将始终初始化为false(…条件。不确定嵌套的while循环是关于什么的。除了显示代码外,请说明您的问题。请修剪代码,使其具有.That
while(!valid)
loop看起来完全没有必要,所以完全删除它也可以解决问题。确实可以,但考虑到OP只做了很少的努力,我不太想为他们重新设计代码。
import java.util.*;
public class ConvertBinaryToInteger{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
final String EXIT="exit";
System.out.println("This program will convert a binary into an integer.");
System.out.println("Enter "+EXIT+" to exit program. Press enter to continue.");
String word=scan.nextLine();
while(!word.equals(EXIT)){
while(!word.equals(EXIT)){
boolean valid = false;
while (!valid) {
System.out.println("Enter a binary number: ");
String binary = scan.next();
boolean isBinary = true;//first convert the 'binary' string into a char array and check for each char whether it is zero or one
char[] bits = binary.toCharArray();
for(int j=0; j<bits.length; j++){//read the inputs
if( (bits[j] != '0') && (bits[j] != '1') ){//check the inputs
isBinary = false;
break;
}
}
if(!isBinary){//not binary
System.out.println("This is not a binary number.");
System.out.println("Please enter a number that contains only 1's and 0's.");
System.out.println("Enter "+EXIT+" to exit program. Press enter to continue.");
word=scan.nextLine();
}
else{//binary
int integer = 0;
int temp;
int i = 0;
temp = Integer.parseInt(binary);
while (temp != 0){
int r = temp % 10;
double value = r * Math.pow(2, i);
i++;
integer = (int) (integer + value);
temp /= 10;
}
System.out.println("Integer of " + binary + " is " + integer+".");
System.out.println("Enter "+EXIT+" to exit program. Press enter to continue.");
word=scan.nextLine();
}
System.out.println();
scan = new Scanner(System.in);
}
}
}System.out.println("Program ended.");
}
}
while (!valid) {