0

我如何让我的扫描仪流只读取整数

Jane    354
Jill    546
Jenny   718
Penny   125

Scanner 方法nextLine()同时读取名称和数字,所以我想我可以将其解析出来,但我想知道是否有办法nextInt()跳过名称而只读取数字,因为它在看到时立即失败它以String.

4

4 回答 4

0

你可以做这样的事情

Scanner read = new Scanner(new File("some file here"));
while(read.hasNext()){
    if(read.next() instanceof Integer){
        System.out.println(read.next());
    }
}
于 2013-10-22T11:53:20.670 回答
0

如何使用next(),忽略其结果然后使用nextInt()?如果您的所有行都采用您在问题中提出的格式,这应该完全符合您的需要。

于 2013-10-21T22:51:14.750 回答
0

您可以只调用scanner.next() 并对其不执行任何操作以跳过字符串,例如:

// Scanner sc;
while(sc.hasNextLine()){
    sc.next(); //Skip string
    int number = sc.nextInt();
}
于 2013-10-21T22:51:56.593 回答
0

您也可以使用scanner.nextLine(),然后使用reg ex 匹配器获取int

String mydata = scanner.nextLine();
Pattern pattern = Pattern.compile([0-9]+);
Matcher matcher = pattern.matcher(mydata);
if (matcher.find()){
    int num = Integer.parseInt(matcher.group(1));
}
于 2013-10-21T23:06:33.030 回答