使用Scanner hasNext()和hasNextLine()每行检索2个元素

时间:2017-06-18 20:01:42

标签: java java.util.scanner

在Java中,如果给你一个每行两个元素的文本文件,我们如何分别获取这些元素?

例如,我们说5 line text file包含以下内容:

a morgan
b stewart
c david 
d alfonso
e brittany

并且假设我们想要将单个字符存储在变量中,将名称存储在另一个变量中。我们怎么做这个是java?

我已经实现了一些像这样的代码:

while(scanner.hasNextLine()){
  for(int i = 0; i < 2; i++){
  char character = scanner.hasNextChar(); // doesn't exist but idk how 
  String name = scanner.hasNext(); 
}
}

基本上我有一个while循环逐行读取每个2个元素,并且在每一行中都有一个for循环来将每个元素存储在一个变量中。我对如何在java中提取每个单独的元素感到困惑。

2 个答案:

答案 0 :(得分:1)

考虑到您使用scanner.hasNextLine()作为循环条件。您可以拆分String,然后根据需要收集结果。

while (scanner.hasNextLine()){
     String[] result = scanner.nextLine().split(" "); 
     char character = result[0].charAt(0);
     String name = result[1];
}

答案 1 :(得分:0)

您可以使用String.split(String regex)方法将该行与空白字符分开 它将生成一个包含两个String的数组。

如果您调用while(scanner.hasNextLine()){来获取输入,则应调用String name = scanner.nextLine();来检索输入。

hasNext()方法返回一个布尔值,指示此扫描程序的输入中是否有另一个标记。
执行while(scanner.hasNextLine()){scanner.hasNext()是多余的。