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



在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 中提取每个单独的元素感到困惑。

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

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

可以使用 String.split(String regex) 方法拆分带有空格字符的行。
它将生成一个包含两个字符串的数组。

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

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

最新更新