如何在程序获得有效答案之前提示用户,如何做N次?

时间:2015-06-07 00:26:17

标签: java arrays java.util.scanner

我试图制作一个简单的程序,如果用户在数组中输入一个数字,那么数组编号等于的数字就会出现。除非用户输入不在数组中的数字,然后在数组中放入一个数字,否则它完美地工作。会发生什么是程序没有显示正确位置的答案。

Scanner ethan = new Scanner(System.in);

System.out.println("Enter array place: ");
int amount = ethan.nextInt();

int array[] = {2, 4, 9};

for(int i = 0; i<amount; i++)
{
    if (amount == 0) {
        System.out.println(array[0]);
    } else if (amount == 1) {
        System.out.println(array[1]);
    } else if (amount == 2) {
        System.out.println(array[2]);
    } else {
        System.out.println("Enter integer in array:");
        amount = ethan.nextInt();
    }
}

3 个答案:

答案 0 :(得分:2)

您不应使用for循环中输入的数字

for(int i = 0; i < amount; i++){

如果我输入0怎么办?该程序不会运行单个循环。

试试这个,它应该是有效的。我在代码中为你做了一些评论。

int array[] = {2, 4, 9};
Scanner ethan = new Scanner(System.in);

/**
 * This gets one valid number from the user
 */
public void getOneNumber() {
    /**
     * This is our "switch" variable
     */
    boolean validIndexGiven = false;

    while (!validIndexGiven)

    {
        /** This is actually called "array index"*/
        System.out.println("Enter array index: 0 to " + (array.length - 1));
        int index = ethan.nextInt();

        /** Here we check if given integer is in the bounds of array.
         * No need to check every possible value.
         * What if we had array[100]? */
        if (index >= 0 && index < array.length) {
            /** Amount was a valid number. */
            System.out.println(array[index]);
            /** Toggling the switch */
            validIndexGiven = true;
        }
    }
}

/**
 * This prompts the user for numbers as many times as there are elements in array
 */
public void getManyNumbers() {
    int length = array.length;
    for (int i = 0; i < length; i++) {
        getOneNumber();
    }
}

答案 1 :(得分:1)

似乎您希望用户能够输入数字,因为数组中有数字(在这种情况下为3次)。但是,您似乎只允许用户输入它,但很多时候他们在开头键入(当它说&#34;输入数组位置:&#34;。为什么不尝试i<array.length而不是{{ 1}}?或者,您可以使用i<amount循环,只有在此人输入有效数字时才会增加while

提示:您可以说i

答案 2 :(得分:0)

我明白了。这是代码(也谢谢大家留下一些答案):

    Scanner ethan = new Scanner(System.in);

    System.out.println("Enter array place: ");
    int amount = ethan.nextInt();

    int array[] = { 2, 4, 9 };

    while(true){
        if (amount == 0) {
            System.out.println(array[0]);
        break;
        } else if (amount == 1) {
            System.out.println(array[1]);
        break;
        } else if (amount == 2) {
            System.out.println(array[2]);
        break;
        } else {
            System.out.println("Enter integer in array:");
            amount = ethan.nextInt();
        }

    }

}
}