当前位置: 首页 > 知识库问答 >
问题:

使用扫描仪处理用户输入

吕自怡
2023-03-14

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

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

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

共有1个答案

卢枫涟
2023-03-14

我知道这不能回答你的问题,但这是另一种实现目标的方法:

这里使用split(delimiter)方法,该方法将返回string[]数组。然后在for循环中,使用integer.parseint()字符串转换为整数:

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
    }
}
 类似资料:
  • 问题内容: 我正在尝试让扫描仪在循环中进行输入。一旦用户想要完成操作,他就可以退出此循环。我尝试了许多不同的方法来执行此操作,但始终存在一些问题。这是代码: 上面代码的问题(在我尝试的其他方法上也会发生)是,当用户键入 Y时 ,将跳过名字的第一个输入,并跳转到姓氏。如果用户键入 N, 则循环将正确停止。有人可以解释发生这种情况的原因,以及如何克服使用课堂的问题? ps:执行类似的操作,将导致循环终

  • 我很难想出如何正确使用扫描仪来验证用户输入。例如,程序需要用户输入int,用户只能输入正数,如果用户输入“apple”、“delicious apple”或负数,问题将显示错误消息。我尝试了下面的代码,然后我发现了一个令人不安的问题,“那不是一个数字!”我不知道是什么引起了这些问题。。。。 我在“number=sc.nextInt()”下面加了一行代码,意外地解决了这个问题,现在我的代码变成: 这

  • 我正在创建一个用于处理用户输入的类。这样,在其他项目中,我可以从类中调用方法,而不必担心在每个新项目中创建扫描程序。 类中将有一个单独的方法来处理不同的变量类型(float、int、String等)。我从浮动类型开始: 这个方法工作得很好,只是它必须在else部分返回一个float。在本例中,它是一个零,因此当输入到计算器(例如)时,零会导致任何输出等于零。 有没有返回空浮点值的方法来克服这个问题

  • 问题内容: 对于Java练习,我试图创建一个程序,该程序从键盘读取整数,直到输入负数为止。 并打印整数的最大值和最小值,而忽略负数。 一旦运行,是否可以在同一程序中进行连续输入?我必须每次都继续运行该程序以输入数字。 任何帮助,将不胜感激 这是我的代码的一部分-它可以工作,但是我认为有一种更简单的方法可以执行我想要的操作,但不确定如何操作! 问题答案:

  • 对于java实践,我正在尝试创建一个程序,从键盘读取整数,直到输入负数。 它打印整数的最大值和最小值,忽略负数。 是否有一种方法可以在同一个程序运行后继续输入?每次输入一个数字,我都要继续运行程序。 任何帮助将不胜感激 这是我的代码的一部分-它可以工作,但我认为有一种更简单的方法可以做我想做的事情,但不确定如何做!

  • 我是一个初学者,我写了一个java程序,允许你输入n个数字,它只显示最大值、最小值和平均值,如果输入了数字-5,我的程序显示不正确,我需要一些帮助。我想在输入字符串而不是整数时使用try/catch来捕获错误。