2013-10-21 15 views
0

我将如何得到我的扫描仪流只需要读取如何扫描从包含字符串文件整数太在Java中

Jane 354 
Jill 546 
Jenny 718 
Penny 125 

的扫描方法的整数nextLine()阅读这两个名称,数量,所以我假设我可以解析它,但我想知道是否有一种方法可以跳过nextInt()这个名称,只读取这些数字,因为它在看到它以String开头时立即失败。

回答

0

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

0

您只需拨打scanner.next(),什么也不做与它跳过字符串,例如:

// Scanner sc; 
while(sc.hasNextLine()){ 
    sc.next(); //Skip string 
    int number = sc.nextInt(); 
} 
+0

同样的事情Pshemo说的,对不对?我认为这会起作用,因为除了这个文件的结构外,我们不希望处理任何事情,但希望我将来会学习如何编写更灵活的代码。 – JediCreed94

0

您也可以使用scanner.nextLine(),然后用一个reg抢INT EX匹配

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)); 
} 
+0

目前这有点超出我的范围。如果我正在使用我还没有了解的东西,那看起来很可疑。我想我可以看到发生了什么,但直到现在,我甚至都不知道有模式和匹配程序或如何使用它们。 – JediCreed94

+0

如果格式一致,你也可以在空白处使用String类方法“split”,并为每一行获取第二个结果(int)。 – usddddd

+0

然后解析它,并将它们存储为整数,但正如我所说,我想通过Scanner类来完成任务,因为这是本任务的重点。我从reddit.com/r/javahelp得到了另一个方便的提示,说如果必须的话,我可以更改分隔符,所以我想我会回答Pshemo和MrAzzaman提出的答案。 – JediCreed94

0

你可以做这样的事情

Scanner read = new Scanner(new File("some file here")); 
while(read.hasNext()){ 
    if(read.next() instanceof Integer){ 
     System.out.println(read.next()); 
    } 
}