2013-06-21 3 views
0

Я пытаюсь написать небольшую программу для вычисления определенных оценок, но я получаю inputMismatchException, но я не знаю почему. Проблема в том, что я получаю исключение, прежде чем у меня даже был шанс ввести целое число.java.util.inputMismatchException Не знаю почему

Может ли кто-нибудь помочь мне.

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

     int passes = 0; 
     int failures = 0; 
     int studentCounter = 1; 
     int result; 

     while(studentCounter <= 10) 
     { 
      //Zelf aangepast = output gewijzigd 
      System.out.println("Geef het resultaat in (1 = geslaagd, 2 = gebuisd)."); 
      result = input.nextInt(); 

      if(result == 1) 
      { 
       passes = passes + 1; 
      } 
      else 
      { 
       failures = failures + 1; 
      } 

      studentCounter = studentCounter + 1; 
     } 

     //Zelf aangepast = output gewijzigd 
     System.out.printf("Aantal leerlingen geslaagd: %d\nAantal leerlingen gebuisd: %d\n", passes, failures); 

     if(passes > 8) 
     { 
      //Zelf aangepast = output gewijzigd 
      System.out.println("Bonus voor de leerkracht!"); 
     } 
    } 
} 

Таким образом, как вы можете видеть, я не могу присвоить значение переменной.

+0

Вы вводите целое число ...? – Doorknob

+0

Вы определяете эти переменные где-то ...? – Kroltan

+1

Добро пожаловать в SO. Ваш вопрос неполный, поскольку отсутствует какая-то важная информация: что такое объявление (т. Е. Тип) результата? Каким образом вы указали, что вызвало исключение исключения? –

ответ

1

inputMismatchException означает, что Scanner (input) получил что-то не ИНТ, который, как ожидается, от nextInt:

Брошенный сканера, чтобы указать, что маркер извлекаться не соответствует шаблону для ожидаемого типа, или что токен находится за пределами допустимого диапазона.

Итак, вкратце, следующий токен, который вы даете сканеру, не является int.

0

Это происходит, когда пользователь не вводит действительное целое число при вызове Scanner.nextInt(). Чтобы решить эту проблему, вы можете использовать такие исключения:

while(studentCounter <= 10) 
{ 
    //Zelf aangepast = output gewijzigd 
    System.out.println("Geef het resultaat in (1 = geslaagd, 2 = gebuisd)."); 
    try { 
     result = input.nextInt(); 
    } 
    catch(InputMismatchException i) { 
     System.out.println("Please enter integers only."); 
     result = 0; 
    } 

    if(result == 1) 
    { 
     passes = passes + 1; 
    } 
    else 
    { 
     failures = failures + 1; 
    } 

    studentCounter = studentCounter + 1; 
}