2015-04-06 2 views
0

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

Это мой код до сих пор

public static void main (String[] args) throws IOException 
{ 
    File file = new File("codes01.dat"); 
    Scanner myFile = new Scanner(file); 

    Scanner kb = new Scanner(System.in); 

    String line; 
    System.out.println("Hey man, this is totally leigt, just enter an Airport code and I'll hook you up."); 
    System.out.print("First, y'all need to give me the file name: "); 
    String fileName = kb.nextLine(); 


    if (fileName.equalsIgnoreCase("codes01")) 
    { 

    System.out.print("Cool, now give me your Airport Name: "); 
    String AirportName = kb.nextLine(); 
    while (myFile.hasNextLine()) 
    { 
    line = myFile.nextLine(); 
    String name = myFile.next(); 
    System.out.println(line); 
    if(name.equalsIgnoreCase(AirportName)) 
    { 

    System.out.println("IT'S WORKING, I DON'T KNOW HOW BUT IT IS "+line); 
    break; 
    } 

    else 
    { 
    System.out.println("Sorry, dude, ain't no airport in my VERY limited list with that name"); 
    break; 
    } 
    } 

    } 

ответ

0

Программа возвращает результат еще, а не найденного результата.

Это потому, что вы выходите из цикла после проверки первой строки в вашем файле.

Посмотрите внимательно на свой код ... в контексте.

if(name.equalsIgnoreCase(AirportName)) { 
    System.out.println("It is working"); 
    break; 
} else { 
    System.out.println("Sorry"); 
    break; // What???? 
} 
+0

привет спасибо за такой быстрый ответ! Я действительно избавился от перерывов, он работает, но в некоторой степени работает только первое слово, когда я ввожу какие-либо другие слова в строке, я получаю Исключение в теме «main» java.util.NoSuchElementException в java .util.Scanner.throwFor (Scanner.java:862) at java.util.Scanner.next (Scanner.java:1371) at AirportCodes1.main (AirportCodes1.java:37) – user3319290

+0

И пытались ли вы решить эту проблему для себя? Вы читали javadocs для метода? Для исключения? Вы пытались выяснить, почему было исключено исключение. Это то, что вам нужно научиться делать для себя. –

+0

Я исследовал это, приятель, я бы не просто попросил вас сделать свою работу для меня, это несправедливо. Я знаю, что компилятор делает это, потому что это запутанная следующая строка и следующие команды, я пытался решить ее, перемещая их, но это все еще дает мне головную боль:/Я читаю JavaDocs, другие сообщения Stack, я все еще сталкиваюсь с такой же выпуск. Примечание: Мой файл содержит строку текста (например, BOM, Mumbai Airport) Когда я печатаю BOM, (с запятой), он отлично работает, но когда я печатаю что-нибудь еще, это не Еще раз спасибо так много для вашего времени. – user3319290

0

Почему вы используете оператор break в блоке if-else? Попытайтесь избавиться от инструкции break и затем выполнить свой код.

if(name.equalsIgnoreCase(AirportName)) 
{ 
    System.out.println("The name of Airport matches"); 
} 
else 
{ 
System.out.println("Sorry No Match Found"); 
} 
+0

Привет, спасибо за такой быстрый ответ! Я действительно избавился от перерывов, он работает, но в некоторой степени работает только первое слово, когда я ввожу какие-либо другие слова в строке, я получаю Исключение в теме «main» java.util.NoSuchElementException в java .util.Scanner.throwFor (Scanner.java:862) at java.util.Scanner.next (Scanner.java:1371) at AirportCodes1.main (AirportCodes1.java:37) – user3319290

0

Посмотрите внимательно на эти две линии. Там есть проблема. Шаг через код в голове, делая вид, что вы класс Scanner.

line = myFile.nextLine(); 
String name = myFile.next();