Что такое ошибка Java: NoSuchElementException? - PullRequest
0 голосов
/ 04 октября 2010

Нужна помощь по следующему коду ...

package pkgPeople;

import java.io.File;
import java.io.PrintWriter;
import java.util.Scanner;

public class CreateWithoutSerialization {

    public static void main(String[] args) throws Exception
    {
        BankAccount bankAccount = new BankAccount(0, 0);
        Person person = new Person();
        String nm;
        int ht;
        int wt;
        long ba;
        double bal;
        File inFile = new File("G:/CS9.27/inperson.txt");
        File outFile = new File("G:/CS9.27/outperson.txt");
        PrintWriter writer = new PrintWriter(outFile);
        Scanner reader = new Scanner(inFile);

        nm = reader.nextLine();
        ht = reader.nextInt();
        wt = reader.nextInt();
        ba = reader.nextLong();
        bal = reader.nextDouble();

        person.setName(nm);
        person.setHeight(ht);
        person.setWeight(wt);
        bankAccount.setAcctID(ba);
        bankAccount.setBalance(bal);


        System.out.println(person.toString());

        //Write the attributes in ASCII to a file
        writer.printf("%s is the name of the person.\r\n",nm);
        writer.printf("%d inches is the height of %s.\r\n",ht, nm);
        writer.printf("%d pounds is the weight of %s\r\n",wt,nm);
        writer.printf("%d dollars is the balance of %s\r\n", bal, nm);
        writer.printf("%l is the ID of the bank account.\r\n", ba);



    }

}

При запуске я получаю это исключение ..

Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)
at pkgPeople.CreateWithoutSerialization.main(CreateWithoutSerialization.java:23)

Это ошибка файла? Пробовал несколько исправлений, но все еще застрял.

Ответы [ 3 ]

5 голосов
/ 04 октября 2010

Исключение выдается при вызове reader.nextLine() Согласно javadoc , это означает, что nextLine() не может найти следующую строку.

На основании внимательного прочтенияЯ думаю, что это означает, что ваш входной файл пуст.Вы можете проверить это, позвонив hasNextLine() до вызова nextLine().

4 голосов
/ 04 октября 2010

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

Если вы посмотрите на javadoc для метода, который вы используете здесь , вы скоро поймете, что проблема в том, что нет символа новой строки для Scanner для чтения в строке. Проверьте входной файл и убедитесь, что он соответствует спецификациям. Если вы уверены, что ваш входной файл правильный, вы можете выполнить некоторую отладку, используя API-интерфейс файла, чтобы убедиться, что входной файл существует, прежде чем пытаться использовать его в качестве входных данных для сканера.

Вся необходимая информация доступна в javadoc .

2 голосов
/ 04 октября 2010

Хммм ... У меня здесь есть две вещи, которых здесь не хватает ...

Теперь NoSuchElementException появляется, когда ввод исчерпан . Это не должно быть связано с nextLine(). Поэтому проверьте, нет ли следующего числа прочтений

nm = reader.nextLine();
ht = reader.nextInt();
wt = reader.nextInt();
ba = reader.nextLong();
bal = reader.nextDouble();

У вас есть равное количество строк в inperson.txt

Также Когда закончите писать ... сделайте это также ..

writer.flush();
writer.close();

В противном случае вы не увидите никакого выходного файла ...:)

удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...