使用扫描程序按行

时间:2015-05-05 02:14:44

标签: java regex java.util.scanner

我从文件中提取数据。我在阅读文件时使用分隔符时遇到问题。

我的文件是这样订购的:

0    Name    0
1    Name1   1

结构是整数,制表符(\ t),字符串,制表符(\ t),另一个整数,然后是换行符(\ n)。

我尝试使用此问题中引用的复合分隔符: Java - Using multiple delimiters in a scanner

但是,当我运行以下代码时,我仍然收到InputMismatch异常:

while(readStations.hasNextLine()) { 
 327    tempSID = readStations.nextInt();
 328    tempName = readStations.next();
 329    tempLine = readStations.nextInt();
        //More code here
}

它在上面代码的第二行调用此错误... 我不知道为什么,感谢帮助,谢谢。

当前输出对代码运行:

Exception in thread "main" java.util.InputMismatchException
    ...stuff...
    at Metro.declarations(Metro.java:329)

2 个答案:

答案 0 :(得分:1)

换行最有可能导致问题。试试这个

    public class TestScanner {

        public static void main(String[] args) throws IOException {
            try {   
                Scanner scanner = new Scanner(new File("data.txt"));   
                scanner.useDelimiter(System.getProperty("line.separator"));   
                while (scanner.hasNext())  {  
                    String[] tokens = scanner.next().split("\t");
                    for(String token : tokens) {
                        System.out.print("[" + token + "]");
                    }
                    System.out.print("\n");
                }
                scanner.close();  
            } 
            catch (FileNotFoundException e) {   
                e.printStackTrace();  
            }
       }
    }

答案 1 :(得分:0)

我认为当扫描仪像这样分离输入时,你只能使用input.next()而不是下一个int:或保持相同的类型。