10

私は 2 進数を 10 進数に切り替えるプログラムを書いており、初心者のプログラマーです。入力された文字列が 2 進数であること、つまり 1 と 0 のみが含まれていることを確認しようとして行き詰まりました。これまでの私のコードは次のとおりです。

  String num;
  char n;

  Scanner in = new Scanner(System.in);
  System.out.println("Please enter a binary number or enter 'quit' to quit: ");
  num = in.nextLine();
  n = num.charAt(0);
  if (num.equals("quit")){
    System.out.println("You chose to exit the program.");
    return;
  }

  if (n != 1 || n != 0){
    System.out.println("You did not enter a binary number.");
  }

そのままでは、何を入力しても(終了以外)、2進数を入力しても「2進数を入力しませんでした」と出力されます。if ステートメントが間違っているか、文字宣言が間違っていると確信していますが、問題を修正するために個人的に知っていることはすべて試しましたが、オンラインで役立つものは何も見つかりませんでした。どんな助けでも大歓迎です。

4

2 に答える 2

20

正規表現を使用できます。

num.matches("[01]+")

これはtrue、文字列に文字と文字numのみが含まれている場合と、そうでない場合です。01false

于 2012-10-09T23:35:55.257 に答える
2

n!=1 || n!=0n = 0 と 1 を同時に持つことはできないため、常に真です。私はあなたが書きたかったと思いますn!=1 && n!=0

于 2012-10-09T23:39:09.497 に答える