Reza Sami Ответов: 1

Как выполнить поиск и сопоставление в текстовом файле для java?


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

Пример текстового файла (это очень большой текстовый файл)

EHFD324 Вашингтон
SAFRE Нью-Йорк
EH54 Ливингстон
и т. д.....

Я получаю ошибку, программа только попросила "ввести почтовый индекс". Как только я ввожу почтовый индекс, я получаю ошибку.

Что я уже пробовал:

  public static void main(String[] args) throws FileNotFoundException
    {
        try
        {
            File f = new File("Files\\cities.txt");
            Scanner input = new Scanner(f);
            String text;
            while(input.hasNextLine())
            {
                text = input.nextLine();
                process(text);
            }


        }
        catch (FileNotFoundException ex)
        {
            System.out.println(ex.getMessage());
        }   
    }

    public static void process(String text)
    {   String name = null;
    int id;
        Scanner code = new Scanner(System.in);
        System.out.println("enter the postcode");       
        id = code.nextInt();
        Scanner data = new Scanner(text);

         if(code.equals(0))System.out.println(name);

        name = data.next();
        id = data.nextInt();

        while(data.hasNextDouble())
        {

        }
    System.out.println(name+ " ");

    }
}

Suvendu Shekhar Giri

Какую ошибку вы получаете?

Reza Sami

Ошибка, которую я получаю, заключается в том, что:

Исключение в потоке "основной" Java для.утиль.Исключение InputMismatchException
в java. util.Сканер.throwFor(неизвестный источник)
в java. util.Scanner. next (неизвестный источник)
в java. util.Scanner. nextInt(неизвестный источник)
в java. util.Scanner. nextInt(неизвестный источник)
в StringFinder.процесс(StringFinder.Ява:45)
в StringFinder.основной(StringFinder.Ява:29)

Я не уверен, правильна ли программа, которую я написал, или нет?

Спасибо за ваш ответ

[no name]

Если бы это было правильно, вы бы не получили ошибку, не так ли? Узнайте, как использовать отладчик.

Reza Sami

Да, вы правы, у вас есть какие-нибудь идеи, чтобы я мог их исправить

[no name]

Ну да, научитесь пользоваться отладчиком, как я вам уже говорил. Это более ценный навык, чем вы понимаете.

1 Ответов

Рейтинг:
1

Richard MacCutchan

Ваша программа написана задом наперед. Первое, что вам нужно сделать, это получить почтовый индекс от пользователя. И не пытайтесь читать его как int поскольку коды в вашем файле - это все символьные строки. Как только у вас есть это поле, вы просто читаете файл, сравнивая каждый почтовый индекс с введенным. И наконец, почему вы используете nextDouble когда в тексте нет двойных значений?

Посмотрите на формат исходного файла и тщательно подумайте, как вам нужно искать в нем соответствующие данные.