2016-06-01 58 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

提示:嘗試打印'ans'和'ans1'來查看區別 –

+1

正確設置代碼格式,您將自己找到原因。 – Codebender

+1

在其他人之後或之內不需要使用「if」。例如,你檢查答案是否正確的部分,你不需要'else(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暗示](https://stackoverflow.com/questions/37558453#comment62605449_37558453),OP的馬虎編碼風格不只是隱藏問題---它是問題。通過清理代碼,您意外地修復了隱藏在所有錯誤放置的大括號中的邏輯錯誤。 –