2017-05-11 37 views
0

嗨我正在创建一个从文件中读取数据(见下面的格式),其名称以','分隔的方法是3个整数。Java文件读取器 - 读取字符串后的int

当方法被调用的名称输出很好,但一旦我后添加一个整数,它产生的错误 - java.util.NoSuchElementException

有人能告诉我,我要去哪里错了。谢谢。

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

回答

0

当你调用String name = in.nextLine();,将加载完整产品线,即“名,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); 
     } 
    } 
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 
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); 
}