使用scanner从文件中获取整数和字符串

时间:2014-05-14 03:30:15

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

我有一个包含内容的文件

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

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

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

感谢。

2 个答案:

答案 0 :(得分:2)

我认为你过度思考问题 - 你不需要使用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,则扫描程序中的nextInt方法将失败,如果输入中的标记数不是三的倍数,则代码将抛出异常。

答案 1 :(得分:1)

默认分隔符正常

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