Исключение несоответствия ввода со сканером

#java #java.util.scanner

#java #java.util.scanner

Вопрос:

У меня есть задание, и я пытаюсь создать программу, в которой текстовый файл будет считываться на Java с помощью сканера. Однако, когда я пытаюсь ввести некоторые данные, отображается исключение несоответствия ввода.

Вот мой код:

     import java.util.*;
    import java.io.*;
    public class Schedule
    {   
    public static void main(String[] args) 
    {
        Scanner input = new Scanner (System.in);
        Scanner sc = null;
        try 
        {

            sc = new Scanner (new FileReader("E:\Documents\Java\Hackathon2016\Sample_Folder\Monday.txt"));
        System.out.println("Enter Subject Code");
            subject = input.next ();
            while (sc.hasNext())
            {
                int time = sc.next ();
                 subjects = sc.next ();
                 String prof = sc.next ();
                 room = sc.nextInt ();

                if (subject.equalsIgnoreCase (subjects))
                {
                    System.out.print ("Your Schedule is at " time subject prof room);
                }
            }
        }
        catch (IOException e)
        {
            e.getMessage ();
        }
    }
}
  

Вот содержимое текстового файла:

 TIME SUBJECT Professor Room
07:00am-09:30am Physics1A Ma'am_Mina CON416
10:00am-11:30am MATH21 Sir_Andrew TBA_Anscie
 11:30am-1:00pm SOSC3A Ma'am_Filart TBA_CON
01:00pm-4:00pm CCTN 50 Sir_Jake DCEE_101
  

Он продолжает говорить, что исключение несоответствия ввода
может кто-нибудь помочь?
Спасибо

Комментарии:

1. Не могли бы вы показать фактическое сообщение об ошибке?

2. На первый взгляд (кроме «хакатона», конечно) записи в комнате не кажутся целыми числами, пока вы пытаетесь отсканировать их как sc.nextInt ();

3. Этот код даже не компилируется, не только потому, что многие переменные даже не определены. Например int time = sc.next (); , не будет компилироваться, потому что next() возвращает String , и вы пытаетесь присвоить его int переменной. Также, чтобы получить помощь как можно быстрее, пожалуйста, разместите правильные сообщения об ошибках точно так, как вы их видите (скопируйте / вставьте).

4. Исключение генерируется Scanner , а не by FileReader , как вам покажет мгновенная проверка трассировки стека. Будьте точны.

Ответ №1:

Я думаю, что ваш код должен быть таким

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

        sc = new Scanner (new FileReader("E:\Documents\Java\Hackathon2016\Sample_Folder\Monday.txt"));
        System.out.println("Enter Subject Code");
        String subject = input.next();
        while (sc.hasNext())
        {
            String time = sc.next();
            String subjects = sc.next();
            String prof = sc.next();
            String room = sc.next();

            if (subject.equalsIgnoreCase (subjects))
            {
                System.out.print ("Your Schedule is at " time subject prof room);
            }
        }
    }
    catch (IOException e)
    {
        e.getMessage ();
    }    
}
  

и для строки данных номер 4
01:00pm-4:00pm CCTN 50 Sir_Jake DCEE_101
Я думаю, что это должно быть
01:00pm-4:00pm CCTN50 Sir_Jake DCEE_101