2016-06-01 2 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"); 
      } 
      } 

     } 



    } 

} 

Так что я пытаюсь создать приложение, которое генерирует вопрос, и вычисляет, если ваш вход является правильным или неправильным, так далеко от всех моих тестов, когда исправить это показывает правильная вещь, но когда она неверна, приложение завершается.Math программа репетитор обыкновение показывать «неправильно»

+0

подсказка: попытайтесь распечатать '' ans' и ans1', чтобы увидеть разницу –

+1

Формат кода правильно, и вы найдете причину самостоятельно. – Codebender

+1

Не нужно использовать 'if' после или внутри else. Например, в разделе, где вы проверяете правильность ответа или нет, вам не нужен блок 'if (ans! = Ans1) ...' inside 'else'. Поскольку вы сначала проверяете, равны ли они, ключевое слово 'else' автоматически устанавливает условие, если они неравны. Вы можете устранить много избыточного кода в своей программе, если вы удалите ненужные операторы if внутри блоков else. Это облегчит вам чтение и прохождение вашего кода. –

ответ

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 не просто скрывает проблему --- это проблема. Очищая код, вы случайно устранили логическую ошибку, которая была скрыта во всех этих неуместных фигурных скобках. –