2014-11-19 2 views
0

Код и привязка исключения прилагаются. Pls Помогите мне с InputMismatchException. Я считаю, что есть что-то неправильно при вводе значения во время выполненияОбъект Array в JAVA, дающий InputMismatchException

import java.util.Scanner; 

class ObjectArray 
{ 
    public static void main(String args[]) 
    { 
     Scanner key=new Scanner(System.in); 
     Two[] obj=new Two[3]; 

     for(int i=0;i<3;i++) 
     { 
      obj[i] = new Two(); 
      obj[i].name=key.nextLine(); 
      obj[i].grade=key.nextLine(); 
      obj[i].roll=key.nextInt(); 
     } 

     for(int i=0;i<3;i++) 
     { 
      System.out.println(obj[i].name); 
     } 
    } 
} 

class Two 
{ 
    int roll; 
    String name,grade; 
} 

Exception

+0

просьба представить журналы исключений. –

+0

Возможно, вы не введете данные в правильном порядке. Похоже, вам нужно ввести String, String, затем int, 3 раза. Это помогает добавлять выражения println() перед каждым вызовом 'nextLine()' или 'nextInt()', чтобы вы знали, какой тип данных следует вводить дальше. – mdnghtblue

+1

Возможный дубликат [* 'Пропуск nextLine() после использования nextInt()' *] (http://stackoverflow.com/questions/13102045/skipping-nextline-after-use-nextint). Вам нужно вызвать 'nextLine' после вызова' nextInt'. В противном случае программа получит один вызов 'nextXXX' перед вами. В тот момент, когда вы вводите 'R', программирование запрашивает' nextInt'. – Radiodef

ответ

1

Вместо:

obj[i].roll=key.nextInt(); 

Использование:

obj[i].roll=Integer.parseInt(key.nextLine()); 

Это обеспечивает перевод строки после целого правильно подбирается и обрабатывается.

+0

сделано согласно вашему предложению +1 для вас. –

1

использование Integer.parseInt(key.nextLine());

public class ObjectArray{ 

    public static void main(String args[]) { 
    Scanner key = new Scanner(System.in); 
    Two[] obj = new Two[3]; 

    for (int i = 0 ; i < 3 ; i++) { 
     obj[i] = new Two(); 
     obj[i].name = key.nextLine(); 
     obj[i].grade = key.nextLine(); 
     obj[i].roll = Integer.parseInt(key.nextLine()); 
    } 

    for (int i = 0 ; i < 3 ; i++) { 
     System.out.println("Name = " + obj[i].name + " Grade = " + obj[i].grade + " Roll = " + obj[i].roll); 
    } 
} 

}

class Two { 
    int roll; 
    String name, grade; 
} 

выход

a 
a 
1 
b 
b 
2 
c 
c 
3 
Name = a Grade = a Roll = 1 
Name = b Grade = b Roll = 2 
Name = c Grade = c Roll = 3 
Смежные вопросы