将二进制转换为int并询问用户是否要再试一次

时间:2016-04-01 06:59:06

标签: 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);

    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');

我一直卡在"你没有输入二进制数...再试一次:"即使我输入二进制数字,我做错了什么?

2 个答案:

答案 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();
}