我的代码是:
String num;
char n;
char repeat;
String input;
do {
Scanner keyboard = new Scanner(System.in);
Scanner in = new Scanner(System.in);
System.out.println("Enter a binary number: ");
num = in.nextLine();
n = num.charAt(0);
while (n != '1' && n != '0') {
System.out.println("You did not enter a binary number... try again: ");
in.next();
}
System.out.println("Your binary number is " + Integer.parseInt(num,2));
System.out.println("Would you like to try again? Y/N");
input = keyboard.nextLine();
repeat = input.charAt(0);
} while (repeat == 'y' || repeat == 'Y');
我一直卡在"你没有输入二进制数...再试一次:"即使我输入二进制数字,我做错了什么?
答案 0 :(得分:2)
while (n != '1' && n != '0')
{
System.out.println("You did not enter a binary number..." +
"try again: ");
num = in.next();
n = num.charAt(0);
}
在上面做。进入循环后,您没有更新n
。
答案 1 :(得分:0)
基本问题是while循环条件检查n
,但n
在循环中没有改变,这意味着条件的值永远不会改变。
还有一个问题是你需要检查的不仅仅是第一个字符 - 一切都需要是0或1.此外,你需要确保有第一个字符要检查 - 用户可以输入一个空字符串。
检查这个的最简单方法是使用正则表达式:check num
匹配循环条件中的模式,如果不匹配则更新循环体中的值:
while (!num.matches("[01]+")) {
System.out.println("Enter a valid binary number");
num = in.nextLine();
}