2017-12-29 61 views
-5

入力が奇数か偶数かをテストしようとしています。入力が奇数になるまで、入力が継続していても継続するとプログラムは指示します。それが奇妙なときは、プログラムを停止します。しかし、プログラムは止まっていません。誰もが考えている?入力が奇数か偶数かをテストしよう

private static Scanner scanner = new Scanner(System.in); 
public static void main(String[] args) { 
    while (isEven()) { 
     if (isEven()) { 
      isEven(); 
     } else { 
      System.out.println(" You added an odd number, done!"); 
      return; 
     } 
    } 
} 
public static boolean isEven(){ 
    int a = scanner.nextInt(); 
    if (a%2 ==0){ 
     System.out.println("You added an even number, go on"); 
    } 
    return true; 
} 

}

+2

はあなた 'isEven'は常にループ内で' isEven'を呼び出すときに数字をスキップしても奇数numbers.Alsoために 'true'を返します。 – tsolakp

+0

メインメソッドで 'isEven()'を十分に呼び出すのですか? – Kayaman

答えて

1

あなたは、あなたがあなたのメソッドを複数回呼び出す必要はありませんはこのすべてをを簡素化し、より良いたい:

public static void main(String[] args) { 
    Scanner scanner = new Scanner(System.in); 

    while (writeAndCheckEven(Integer.parseInt(scanner.nextLine()))) { 
     System.out.println("You added an even number, go on"); 
    } 

    System.out.println("You added an odd number, done!"); 
} 

private static boolean writeAndCheckEven(int number) { 
    return number % 2 == 0; 
} 
  • あなたはしないでくださいreturnを使用する必要があります。
  • scannerを直接パラメータ
  • で使用することができます。
  • は両方whileを使用していないとifそれはあなたがやりたいことはありません
0

コードが不正なロジックが含まれているため、あなたは、このコードを書き換える必要があります。あなたの要件については、 正しいコード:

private static Scanner scanner = new Scanner(System.in); 

public static void main(String[] args) { 
    while (true) { 
     int number = scanner.nextInt(); 
     if (isEven(number)) { 
      System.out.println("You added an even number, go on"); 
     } else { 
      System.out.println(" You added an odd number, done!"); 
      return; 
     } 
    } 
} 

private static boolean isEven(int number) { 
    return number % 2 == 0; 
} 
+0

私はスキャナを使用しています、最初と5行を確認してください。このコードを試してください:) – rodgenk

関連する問題