For循环中的多个扫描仪输入

时间:2013-09-28 16:28:20

标签: java for-loop user-input java.util.scanner

我刚刚开始学习如何用Java编程,我对扫描仪输入有疑问。我正在构建一个简单的程序,它只是要求用户输入以创建数值数组。我想知道是否有办法检查包含for循环的数字输入,而不是在for循环中对我的每个案例进行一次检查。

同样,我非常感谢任何其他关于我的代码的评论或建议,以帮助我改进和理解我正在做的事情。

谢谢!

编辑:我正在通过' Main'我运行程序的类。

import java.util.Scanner; //Import the use of the Java Scanner

public class ArrayBuild { // Open Application

    private static Scanner input;

    public Double[] anArray;

    public static int arrayCount = 0;

    public ArrayBuild() { // Constructor for ArrayBuild object

        input = new Scanner(System.in);

        arrayCount++;

        System.out.println("This will be Array: " + arrayCount);

        // Array Size Declaration
        System.out.println("Enter Array Size: ");
        while (!input.hasNextInt()) {
            System.out.println("Please enter an integer for Array size!");
            input.next();
        }
        int n = input.nextInt();
        anArray = new Double[n]; // Create 'anArray' of size n
        //

        for (int i = 0; i < n; i++) { // Begin For Loop

            if (i == 0) {
                System.out.println("Enter First Number: ");
                while (!input.hasNextDouble()) {
                    System.out.println("Please enter a number for array data!");
                    input.next();
                }
                Double D = input.nextDouble();
                anArray[i] = D;
            }

            else if (i > 0 && i < (n - 1)) {
                System.out.println("Enter Next Number: \n");
                while (!input.hasNextDouble()) {
                    System.out.println("Please enter a number for array data!");
                    input.next();
                }
                Double D = input.nextDouble();
                anArray[i] = D;
            }

            else if (i == (n - 1)) {
                System.out.println("Enter Final Number: ");
                while (!input.hasNextDouble()) {
                    System.out.println("Please enter a number for array data!");
                    input.next();
                }
                Double D = input.nextDouble();
                anArray[i] = D;
            }
        } // End For Loop
    }
} // Close Class

1 个答案:

答案 0 :(得分:2)

简化和编写干净代码可以做的一件事就是始终将重复代码分开。在您的情况下,在for循环中,您只是在if条件中更改print语句。像这样外接其他代码 -

for (int i = 0; i < n; i++) { // Begin For Loop

        if (i == 0) 
            System.out.println("Enter First Number: ");

        else if (i > 0 && i < (n - 1))
            System.out.println("Enter Next Number: \n");

        else if (i == (n - 1)) 
            System.out.println("Enter Final Number: ");

        while (!input.hasNextDouble()) {
                System.out.println("Please enter a number for array data!");
                input.next();
        }
        Double D = input.nextDouble();
        anArray[i] = D;

    } // End For Loop