gpt4 book ai didi

java - 使用 Scanner 处理用户输入

转载 作者:行者123 更新时间:2023-11-30 08:26:34 25 4
gpt4 key购买 nike

我正在尝试通过单行输入检索用户输入:例如 5,6,4,8,9 使用扫描仪分隔符作为逗号。如何使用这种类型的输入检索任意数量的整数?也就是说,无需询问用户他们希望输入多少个整数。这是我一直在使用的代码,但是当我想让它中断时不能让 while 循环中断。请注意,我保留 System.out 以跟踪程序当前运行的位置。令人困惑的部分是,我可以获得这种格式的用户输入,但程序停止并再次要求用户输入,然后如果输入是一个整数,它会要求更多输入,直到用户输入更长的输入流(至少 2,6 + enter)然后输出字符串“called break”然后“outside of while loop”。

import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;


public class Lab1 {

/**
* @param args
* @throws IOException
* @throws NumberFormatException
*/
@SuppressWarnings("resource")
public static void main(String[] args) throws NumberFormatException, IOException {
// TODO Auto-generated method stub
ArrayList<Integer> numbers = new ArrayList<Integer>();
int numberList;
Scanner scanner = new Scanner(System.in);
scanner.useDelimiter(",");
System.out.print("Enter integers: ");

while(scanner.hasNext())//------------------------while loop------
{
if(scanner.hasNextInt())
{
numberList = scanner.nextInt();
numbers.add(numberList);
System.out.println(numbers.toString() + " " + numbers.size());
}
else
{
System.out.println("called break");
break;
}
System.out.println("Inside of while loop");
}//-------------------------------------------------end of while loop------

System.out.println("outside of the while loop now");
}
}

Input: 1,2,3,4,5
Enter integers: 1,2,3,4,5
[1] 1
Inside of while loop
[1, 2] 2
Inside of while loop
[1, 2, 3] 3
Inside of while loop
[1, 2, 3, 4] 4
Inside of while loop

即使在 5 之后没有整数并且程序正在等待更多输入,我仍然在 while 循环中,现在如果我在最后插入一个非整数值,我会得到完全相同的结果。在这两个结果之后,一旦用户输入更多值 (1,2),程序就会退出 while 循环并成功完成。使用逗号分隔符方法输入完整数后,如何中断 while 循环?

最佳答案

我知道这不能回答您的问题,但这是实现预期目标的另一种方式:

这里使用了split(delimiter)方法,返回一个String[]数组。然后在 for 循环中,使用 Integer.parseInt()String 转换为整数:

public static void main(String[] args)
{
ArrayList<Integer> numbers = new ArrayList<Integer>();
int numberList;
Scanner scanner = new Scanner(System.in);
scanner.useDelimiter(",");
System.out.print("Enter integers: ");
String[] parts = scanner.nextLine().split(",");

// Add int's to the array 'numbers'
for (String s : parts) {
numbers.add(Integer.parseInt(s)); // Convert String to Integer
}
}

关于java - 使用 Scanner 处理用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21398161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com