【问题标题】:Using a scanner to extract data with delimiters by line使用扫描仪按行提取带有分隔符的数据
【发布时间】:2015-07-14 14:37:42
【问题描述】:

我正在从文件中提取数据。我在阅读文件时无法使用分隔符。

我的文件是这样排序的:

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)

【问题讨论】:

    标签: java regex java.util.scanner


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      换行符很可能会导致您出现问题。试试这个

          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();  
                  }
             }
          }
      

      【讨论】:

      • 所以我将每一行存储在String 中。然后我分割每一行。然而,即使我拥有三样东西,它也只会分裂并给我两样东西。为什么?我该如何解决这个问题?
      • 该文件看起来就像我在上面的问题中显示的那样(即0 Name 0 等)。文件间距 0 tab String tab 0
      • 上面的例子在它们之间有几个空格......我使用了[0][TAB][Name][TAB][0],它对我来说很好用
      • 是的...但是问题不允许使用制表符。这些是“制表符”字符
      • 我明白,但我已经对此进行了测试并且它正在工作......你能给我提供它的输出吗?还有你的代码
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      相关资源
      最近更新 更多