【问题标题】:Using scanner to get integers and a string from a file使用扫描仪从文件中获取整数和字符串
【发布时间】:2014-07-01 22:44:38
【问题描述】:

我有一个包含内容的文件

v1 0 2 v2 0 3 v3 1 2 v4 1 2 v5 1 3

我需要能够获取信息并将其存储在三个不同的变量中(一个字符串和 2 个整数)。我无法理解我将与 useDelimiter 函数一起使用的模式。

还有一种方法,我不必先将其拆分为单独的字符串,然后再从该字符串中拆分出parseInt?所以我有一个名为Task 的类,它有一个String 和两个Ints。我需要能够浏览文件并创建多个任务,例如Task(v1,0,2), Task(v2,0,3).

谢谢。

【问题讨论】:

  • 你能举一个你正在寻找的输出的例子吗?目前还不清楚您到底要做什么。
  • 听起来应该很容易实现。是什么阻止你尝试?或者,您遇到的具体问题是什么?

标签: java regex pattern-matching java.util.scanner


【解决方案1】:

我认为你想多了——你不需要使用useDelimiter,因为 Java 的 Scanner 对象会自动通过空格分割。

Scanner scan = new Scanner(new File("myFile"));

ArrayList<Task> output = new ArrayList<Task>();

while (scan.hasNext()) {
    String s = scan.next();
    int num1 = scan.nextInt();
    int num2 = scan.nextInt();
    output.add(new Task(s, num1, num2));
}

请注意,如果输入与 string-int-int 的模式不完全匹配,上述代码将失败——如果下一个标记无法解释为 int,则 Scanner 中的 nextInt 方法将失败,并且如果输入中的标记数不是三的倍数,代码将抛出异常。

【讨论】:

    【解决方案2】:

    默认分隔符是可以的

        while(sc.hasNext()) {
            String s = sc.next();
            int i1 = sc.nextInt();
            int i2 = sc.nextInt();
            ...
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-19
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 2013-07-21
      相关资源
      最近更新 更多