2016-06-01 22 views
1
package chapter5; 
import java.util.Scanner; 

public class Exercise5 { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     int min = 1; 
     int max = 10; 
     int one = (int) (Math.random() * (max - min)) + min; 
     int two = (int) (Math.random() * (max - min)) + min; 
     int num = (int) (4* Math.random()+1); 
     char operator = 0; 

     switch (num) 
     { 
     case 1: operator = '+'; 
     break; 
     case 2: operator = '-'; 
     break; 
     case 3: operator = '*'; 
     break; 
     case 4: operator = '/'; 
     break; 
     } 
     System.out.println("What is " + one + " " + operator + " " + two + "?"); 
     double ans = 0; 
     double ans1 = 0; 
     ans = input.nextDouble(); 
     if (num == 1) { 
      ans1 = one + two; 
     } else { 
      if (num == 2) { 
       ans1 = one - two; 
      } else { 
       if (num == 3) { 
        ans1 = one * two; 
       } else { 
        if (num == 4) { 
         ans1 = one/two; 
        } 
       } 
      } 

     if (ans == ans1) { 
      System.out.println("Correct!"); 
     } else { 
      if (ans != ans1) { 
       System.out.println("incorrect"); 
      } 
      } 

     } 



    } 

} 

質問を生成するアプリケーションを作成しようとしていて、入力が正しいか間違っているかを計算しています。正しいことですが、間違っているとアプリは終了します。数学教師プログラムが正しく表示されない

+0

ヒント:適切に違い –

+1

フォーマットあなたのコードを見て、 'ans'と' ans1'をプリントアウトしてみてください、あなたはその理由自分自身を見つけるでしょう。 – Codebender

+1

elseのあとに 'if'を使用する必要はありません。たとえば、答えが正しいかどうかをチェックするセクションでは、 'else'ブロックの中に 'if(ans!= ans1)...'は必要ありません。まず、それらが等しいかどうかをチェックするので、 'else'キーワードは、それらが等しくない場合に自動的に条件を設定します。他のブロックの中の不要なif文を削除すれば、プログラム内の多くの冗長なコードを削除することができます。そうすれば、コードを読んだり歩いたりするのが簡単になります。 –

答えて

0

あなたのコードを少しクリアしましたが、いずれにしてもうまく動作しているようです。エディタの設定をチェックして、プログラムの実行が終了したときに出力コンソールがクリアされないかどうかを確認する必要があります。

package chapter5; 
import java.util.Scanner; 

public class Excercise5 { 

    public static void main(String[] args) { 
     Scanner input = new Scanner(System.in); 
     int min = 1; 
     int max = 10; 
     int one = (int) (Math.random() * (max - min)) + min; 
     int two = (int) (Math.random() * (max - min)) + min; 
     int num = (int) (4 * Math.random()); 

     char operator = "+-/*".charAt(num); 

     System.out.println("What is " + one + " " + operator + " " + two + "?"); 

     double ans = 0; 
     double ans1 = 0; 

     ans = input.nextDouble(); 

     switch(num) { 
      case 0: 
      ans1 = one + two; 
      break; 
      case 1: 
      ans1 = one - two; 
      break; 
      case 2: 
      ans1 = one/two; 
      break; 
      case 3: 
      ans1 = one * two; 
      break; 
     } 

     if (ans == ans1) { 
      System.out.println("Correct!"); 
     } else { 
      System.out.println("Incorrect"); 
     } 
    } 
} 
+0

[Codebender hinted](https://stackoverflow.com/questions/37558453#comment62605449_37558453)のように、OPのちょっとしたコーディングスタイルは問題を隠すだけではなく、問題です。コードをクリーンアップすると、間違って配置された中カッコ内に隠されていた論理エラーが誤って修正されてしまいます。 –

関連する問題