InputMismatchException Массивы Строки - PullRequest
0 голосов
/ 05 июня 2018

Я хочу получить строку и 2 целых числа непрерывно от пользователя в течение n циклов (где 'n' - это количество раз, которое повторяется строка и 2 целых числа ... Например,

Еслиn был равен 5,

Eden 
25
2015
Van
19
2011
Gan
29
2015
Feroz
32
2013
Bourne
22
2015

Я пытался получить его с помощью этого

for(i=0;i<n;i++)
{
a[i]=sc.nextLine();
b[i]=sc.nextInt()
c[i]=sc.nextInt();
}

Но я получаю ошибку

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at Main.main(Main.java:18)

Строка 18 находится на б[i] = sc.nextInt ();

Я хочу понять, почему это происходит и как это решить. Я понимаю, что InputMismatchException возникает, когда тип данных чтения ввода отличается от типа данныхпеременная, в которой читаемый ввод предназначен для хранения. Но я не могу понять, что здесь не так.

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 05 июня 2018

Возможно, вы пытаетесь ввести данные строкового типа в тип int

Sol:

Поместите следующий метод в код.

    //Checking If input is Number or Not
   public boolean isNaN(String number){
    boolean flag=false;
    try{
    number = Integer.parseInt(number);  
    flag=true;
    }catch(Exception e){
    flag=false;
    }
    return =flag;
    }

    -------

    for(i=0;i<n;i++)
    {
    a[i]=sc.nextLine();
    String str=sc.nextLine();

    if(isNaN(str)){
     b[i] = Integer.parseInt(str);  
    }else{
    System.out.println('Invalid Values');
    }

    str=sc.nextLine();

    if(isNaN(str)){
     c[i] = Integer.parseInt(str);  
    }else{
    System.out.println('Invalid Values');
    }

    }

Надеюсь, это сработает для вас.

...