Java fileReader - 在String之后读取一个int

时间:2017-05-11 12:15:08

标签: java oop filereader

您好我正在创建一个从文件中读取数据的方法(请参阅下面的格式),其名称以','分隔,为3个整数。

当调用该方法时,名称输出正常但是一旦我在其后面添加一个整数,就会产生错误 - java.util.NoSuchElementException

有人能告诉我哪里出错了。谢谢。

UPDATE 感谢以下帖子,问题解决了!

3 个答案:

答案 0 :(得分:1)

另一种选择是使用扫描仪

while(in.hasNext()) {
        Scanner sc = new Scanner(in.nextLine());
        sc.useDelimiter(",");
        String name = sc.next();
        int DD = sc.nextInt();
        int MM = sc.nextInt();
        int YYYY = sc.nextInt();

        System.out.println(name + DD + MM + YYYY);
}

答案 1 :(得分:0)

当你致电String name = in.nextLine();时,它会加载完整的行,即" name,5,6,1970",因此再次调用int DD = in.nextInt();将找不到任何内容,并将抛出例外

所以试试这个:

public void readFile() {
        while(in.hasNext()) {
            String line = in.nextLine();
            String[] values = line.split(",");
            String name = values[0];
            int DD =  Integer.parseInt(values[1]);
            int MM =  Integer.parseInt(values[2]);
            int YYYY =  Integer.parseInt(values[3]);

            System.out.println(name + DD + MM + YYYY);
        }
    }

答案 2 :(得分:0)

尝试以下方法:

String line = "name,5,6,1970"; //the whole line
String[] parts = line.split(",");
String name = parts[0]; //name
int DD = Integer.parseInt(parts[1]); //5
int MM = Integer.parseInt(parts[2]); //6
int YYYY = Integer.parseInt(parts[3]); //1970