2016-10-18 2 views
0

Я делаю викторину алгебры в Java, и я хочу проверить, отвечают ли пользователи, как ответ уравнения алгебры. Это то, что у меня уже есть, проверка на дно. Первый оператор if проверяет, является ли второе число положительным или отрицательным и вычисляет его. А второй оператор if пытается выяснить, совпадает ли ответ пользователя с ответом на вопрос. Проблема заключается в том, что Int ответ не может быть передан другому оператору if. Есть ли способ обойти это? Он использует алгебраическое уравнение следующим образом: 1x + 2 = 5.Как проверить, отвечает ли пользователь так же, как Алгебра Ответ В Викторине?

 int numRight = 0; 
    Scanner input = new Scanner(System.in); 
    System.out.println("Welcome to your algebra test!"); 
    System.out.println("What is your name?"); 
    String name = input.nextLine(); 
    System.out.println("Ok, " + name + ", how many questions do you want on your test?"); 
    int numQuestions = input.nextInt(); 

    for(int x = 0; x <= numQuestions; x++){ 

     int coefficient = 7; 
     int num1 = 3; 
     int num2 = 23; 

     while((num2 - num1) % coefficient != 0){ 

     coefficient = (int) (Math.random()*8)+2; 
     num1 = (int) (Math.random()*19)-9; 
     num2 = (int) (Math.random()*90)+10; 

     } 


         if(num1 > 0){ 
       int part1pos = num2 - num1; 
       int answer = (coefficient/part1pos); 
      } else if(num1 < 0){ 
       int part1neg = num1 + num2; 
       int answer = (coefficient/part1neg); 
      } 

     System.out.println(coefficient + "x + " + num1 + " = " + num2); 
     int userAnswer = input.nextInt(); 

     if(userAnswer == answer){ 
      System.out.println("The Answer is correct!"); 
      numRight++; 
     } else{ 
      System.out.println("The answer is wrong!"); 
     } 


    } 
+1

Заявить ответ * вне * 'if'? – immibis

+0

Проблема в том, что ваш расчет неверен. 3x + 5 = 11 (11-5)/3 = x, но вы делаете 3/(11-5) –

ответ

1

Проблема заключается в том, что ваш ответ целочисленный объявлен в другой области от ваших логических утверждений, которые проверяют для ответа правильности. Вы должны объявить и инициализировать свой ответ как 0 за пределами этого логического заявления, где вы объявляете свой коэффициент, num1 и num2.

+0

спасибо, но когда я это сделаю, он не позволит мне задать ответ в операторах if и дать мне ошибка "переменной ответа уже определена в методе main" –

+0

@SamuelWard Знаете ли вы, что вы можете установить переменную, не объявив ее снова? Подсказка: строка 'num1 = (int) (Math.random() * 19) -9;' работает и не имеет 'int' в начале. – immibis

Смежные вопросы