作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试读取在一行中用空格分隔的一个接一个输入的整数。有某种方法可以让这段代码在不使用 .nextLine
的情况下工作,无需将输入转换为字符串然后转换为整数吗?挑战是“不使用 .nextLine”,不使用字符串或转换。读取纯整数并退出 while 循环。
public static void scannerInts (){
int[] list = new int[100];
int n=0;
System.out.print("Input data into one line, [ENTER] to finish: ");
Scanner input = new Scanner(System.in);
while (input.hasNext()) {
if (input.hasNextInt()) {
list[n++]= input.nextInt();
} else {
input.next();
}
}
for (int i=0;i<n;i++)
System.out.print(list[i] + " ");
}
PD:我已经尝试了 Stack OverFlow 的许多回复,但似乎都不起作用。
最佳答案
问题是 System.in
是一个无限流。如果扫描器在已读取的内容中未找到 token ,则调用 hasNextXXX
将导致 System.in
进行提示。用户需要输入一些非整数来终止列表。
但是,您可以使用第二个扫描仪,因为扫描仪可以扫描字符串,例如:
Scanner in = new Scanner(System.in);
System.out.print("Enter a list of integers: ");
List<Integer> list = new ArrayList<>();
Scanner line = new Scanner(in.nextLine());
// optional
line.useDelimiter("\\D+");
while(line.hasNextInt()) {
list.add(line.nextInt());
}
System.out.println("You entered " + list);
使用单个扫描仪,您还可以使用findInLine
:
for(String token; (token = in.findInLine("-?[1-9]\\d*")) != null;) {
list.add(Integer.valueOf(token));
}
关于java - 如何使用 .nextInt .hasNextInt 或 .hasNext 读取在单行中输入的整数而不会造成阻塞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26951134/
我是一个使用 Python 和 PyGTK 的 Linux 软件项目的开发人员。我们正在编写的程序依赖于许多第三方包,这些包可通过所有 mayor 发行版存储库获得。其中之一是 python 绑定(b
我是一名优秀的程序员,十分优秀!