#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
, а не byFileReader
, как вам покажет мгновенная проверка трассировки стека. Будьте точны.
Ответ №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