Вывод из файла в printf - PullRequest
       5

Вывод из файла в printf

1 голос
/ 05 октября 2010

Требуется помощь по следующему коду:

package pkgPeople;

import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;


public class RetrieveNonSerializedFile {

    public static void main(String[] args) throws Exception{
    File inFile = new File("F:/CS9.27/friends2.dat");

       Scanner reader = new Scanner(inFile);


       while (reader.hasNextLine()){
        String nm = reader.nextLine();
        int height = reader.nextInt();
        int weight = reader.nextInt();
        double balance = reader.nextDouble();
        long acctID = reader.nextInt();

        System.out.println(nm + ":" + height + " inches " + weight + " pounds" + acctID + " account ID" + balance + "dollars");
        /*writer.println(nm);
        writer.println(height);
        writer.println(weight);
        writer.println(acctID);
        writer.println(balance);*/
       }

        reader.close();
        //writer.close();




    }

}

При запуске программы выдается исключение

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at pkgPeople.RetrieveNonSerializedFile.main(RetrieveNonSerializedFile.java:22)

.

файл данных, который имеет следующий .....

Jim is the name of the person.
13 inches is the height of Jim.
14 pounds is the weight of Jim
1234.650000 dollars is the balance of Jim
12345 is the ID of the bank account.

Это просто текстовый файл.Любая помощь, чтобы пройти через InputMismatch была бы отличной.Спасибо.

Ответы [ 2 ]

1 голос
/ 05 октября 2010

Вы не израсходовали всю строку «13 дюймов - это высота Джима». Вы прочитали только часть «13» этой строки со своим int height = reader.nextInt(); Когда вы затем попытаетесь прочитать вес (настрока 22 согласно вашей трассировке) вы пытаетесь прочитать, начиная с "дюйма" во 2-й строке входного файла.

1 голос
/ 05 октября 2010

Редактировать: не важно. я неправильно понял шаблон файла ввода:)

Сканер читает по вызову String nm = reader.nextLine(); всю строку. Затем вы вызываете reader.nextInt();, но следующая строка не начинается с целого числа. Поэтому это исключение.

Я думаю, вам следует использовать регулярное выражение (http://download -llnw.oracle.com / javase / 6 / docs / api / java / util / Scanner.html # next% 28java.util.regex.Pattern% 29) или используйте (http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#indexOf%28java.lang.String%29) для поиска правильных деталей.

Кстати, следует добавить тег домашней работы:)

...