Java 将二进制转换为int,并询问用户是否愿意重试

Java 将二进制转换为int,并询问用户是否愿意重试,java,Java,我的代码是: 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);

我的代码是:

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');
我一直被困在“你没有输入二进制数…再试一次:”即使我输入二进制数,我做错了什么

  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

基本问题是while循环条件检查
n
,但
n
在循环中不会更改,这意味着条件的值永远不会更改

还有一个额外的问题,您需要检查的不仅仅是第一个字符-所有字符都必须是0或1。此外,您需要确保有第一个要检查的字符-用户可以输入空字符串

最简单的检查方法是使用正则表达式:check
num
匹配循环条件中的模式,如果不匹配,则更新循环体中的值:

while (!num.matches("[01]+")) {
  System.out.println("Enter a valid binary number");
  num = in.nextLine();
}

您的输入是什么?您不更新该循环中的
n
变量,因此条件不会改变。您还需要检查所有字符,而不仅仅是第一个字符,并确保至少有一个字符。最简单的方法是正则表达式:
while(!num.matches(“[01]+”)
这将在以后中断代码。您还需要更新num,并且必须迭代num。否则0155eee将是有效的二进制数字正确。但我只是强调了他的while循环,因为他被困在while循环中。谢谢