从包含不同数量令牌的行的文件中读取



这是myFile.txt中的数据,第一行有4个标记,第二行有3个,最后一行有4个标记。最后一个令牌是int,表示人员的工资。如果没有薪水,则没有整数,因此少一个token。

Peter, 22, m, 1200
Nina, 24, f
Oscar, 40,m, 40000

显然,while循环进一步下降,会给我一个inputMisMatchException,所以是否有一个很好的方法来读取文本文件,每一行我有一个额外/更少的令牌?

while(input.hasNextLine()) {
     String name = input.next();
     int age = input.nextInt();
     String gender = input.next();
     int salary = input.nextInt();
}

在这种情况下,您可以添加hasNextInt来检查下一个令牌是否为整数:

while(input.hasNextLine()) {
     String name = input.next();
     int age = input.nextInt();
     String gender = input.next();
     if (input.hasNextInt()) {
         int salary = input.nextInt();
         ...
     }
}

但是,这不是通用的:如果文件的第一列也是一个int呢?

更好的方法是逐行读取输入,用逗号和空格分隔,然后根据可用标记的数量解析数据:

while(input.hasNextLine()) {
     String line = input.nextLine();
     String[] tokens = input.split(" ,");
     String name = tokens[0];
     int age = Integer.valueOf(tokens[1]);
     String gender = tokens[2];
     if (tokens.length > 3) {
         int salary = Integer.valueOf(tokens[3]);
         ...
     }
}
  • 您可以使用String line = input.nextLine();读取整行,然后使用line.split(", ");拆分令牌并将它们存储在数组中。

  • 然后你可以遍历数组,得到array[0]是名字,array[1]是年龄,等等…

最新更新