如何在java中创建命令行条目的限制

时间:2014-02-08 06:17:37

标签: java try-catch

我的程序允许您输入数字并按Enter键。然后程序要求你给它另一个号码,直到你得到21个号码。关键是它可以为您提供平均数字。如果你想要,你可以在一个条目上输入尽可能多的数字,它仍然有效。如何制作,这样您一次只能输入一个号码?

另外,如何添加除数字之外的任何条目?

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

class programTwo
{   
    private static Double calculate_average( ArrayList<Double> myArr )
    {
        Double sum = 0.0;
        for (Double number: myArr)
        {
            sum += number;
        }
        return sum/myArr.size(); // added return statement
    }

    public static void main( String[] args )
    {
        Scanner scan = new Scanner(System.in);
        ArrayList<Double> myArr = new ArrayList<Double>();
        int count = 0;
        System.out.println("Enter a number to be averaged, repeat up to 20 times:");
        String inputs = scan.nextLine();

    while (!inputs.matches("[qQ]") )
    {

        if (count == 20)
        {
            System.out.println("You entered more than 20 numbers, you suck!");
            break;
        }

        Scanner scan2 = new Scanner(inputs); // create a new scanner out of our single line of input
        myArr.add(scan2.nextDouble());
        count += 1;
        System.out.println("Please enter another number or press Q for your average");

        inputs = scan.nextLine();
    }
    Double average = calculate_average(myArr);
    System.out.println("Your average is: " + average);
}}

1 个答案:

答案 0 :(得分:1)

如果用户键入“q”或“Q”以外的其他内容(也不是有效数字),则会引发InputMismatchException。您只需捕获该异常,显示相应的消息,并要求用户继续。这可以按如下方式完成:

try {
    myArr.add(scan2.nextDouble());
    count += 1;
} catch (InputMismatchException e) {
    System.out.println("Very funny! Now follow the instructions, will you?");
}

其余代码无需更改。