scanner使用.hasnext()调用字符串输入豁免

wlwcrazw  于 2021-07-03  发布在  Java
关注(0)|答案(3)|浏览(319)

我正在尝试做一个while循环来为扫描器输入添加一个豁免,但无法解决这个问题。
我正在尝试创建下面的异常,并在字符串大小为(1)时调用它。
这是我试图建立的概念:

public static void main(String[] args){ 
Scanner keyboard = new Scanner(System.in); 
ArrayList<String> exception = new ArrayList<String>();

while (keyboard.hasNextString()) {
    exception.add(keyboard.nextString());
    System.out.println(exception);
}

}

pxiryf3j

pxiryf3j1#

不确定您在这里要做什么,但是这个示例从键盘收集数据行,直到输入的值没有长度为止。如果输入的值的长度为1,则会将其添加到异常列表中。然后,它打印异常列表的内容。

List<String> exceptions = new ArrayList<String>();
try (Scanner keyboard = new Scanner(System.in)) {
  while (true) {
    System.out.print("Enter value: ");
    String exception = keyboard.nextLine().trim();
    if (exception.length() == 1) {
      exceptions.add(exception);
    } else if (exception.length() == 0) {
      break;
    }
  }
} 

for (String exception : exceptions) {
  System.out.println(exception);
}

希望这有帮助。

hrysbysz

hrysbysz2#

在java.util.scanner中没有“nextstring()”或“hasnextstring()”这样的方法。如果我错了就纠正我。
我想你是想利用

keyboard.hasNext()

keyboard.next()

所以完整的while循环是:

while (keyboard.hasNext()) {
    exception.add(keyboard.next());
    System.out.println(exception);
}
eqoofvh9

eqoofvh93#

Scanner 没有名称为的任何方法 hasNextString 或者 nextString . 你把他们误认为 hasNext 以及 next . 方法, hasNext 在扫描文件时很有用,但在这种情况下,它不是必需的。
下面是应该如何做:

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        keyboard.useDelimiter("[\\n\\r]");// Add new line character as delimiter

        ArrayList<String> list = new ArrayList<>();
        String input = "";
        do {
            input = keyboard.next();
            if (input.length() == 1) {
                list.add(input);
            }
        } while (input.length() > 0);

        // Display the list
        System.out.println(list);
    }
}

示例运行:

a
Hello
b
c
World
d

[a, b, c, d]

相关问题