-3

当我在主体中使用布尔方法时,我的程序冻结并停止工作。我试过把这个方法放在不同的地方,但发生了完全相同的事情——它冻结了。

该方法非常简单且写得很好,我不确定是什么导致了问题。

PS 方法在代码底部。

谢谢你的帮助!

编辑:现在我看到这是一个愚蠢的问题。再次感谢大家!

public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        int stringNumber = 0;
        String[] stringArray = new String[10];


        for (int i = 0; i <= stringArray.length; i++) {

            boolean itemExists = false;
            boolean AddItem = AddItem();


            if (AddItem == true) {

                out.println("\nEnter a string");
                String input = keyboard.next();

                if (i > 0) {
                    for (int j = 0; j < stringArray.length; j++) {
                        if (input.equalsIgnoreCase(stringArray[j])) {
                            itemExists = true;
                            out.println("Item \"" + input + "\" already exists.");
                            break;
                        }
                    }
                }

                if (itemExists == false) {
                    stringArray[stringNumber] = input;
                    out.println("\"" + stringArray[stringNumber] + "\"" + " has been stored.\n");
                } else {
                    out.println("Try again.");
                    i--;
                }

                PrintArray(stringArray);
                stringNumber++;
            }
        }
    }

  // This is the method I was talking about //
    public static boolean AddItem() {
        Scanner keyboard = new Scanner(System.in);
        int input = keyboard.nextInt();
        out.println("If you want to add an item, Press 1");

        if (input == 1) {
            return true;
        } else {
            out.println("Invalid input.");
            return false;
        }
    }
4

3 回答 3

5

我怀疑它没有冻结——它只是在等待输入。不幸的是,由于这两个语句的顺序,它没有告诉您它正在等待输入:

int input = keyboard.nextInt();
out.println("If you want to add an item, Press 1");

切换这些回合,程序就更有意义了。即使没有切换它们,它也不会冻结 - 它只是等待输入。

于 2013-10-26T09:45:47.450 回答
0

您正在使用scanner.nextInt()which is waiting for user input不是 freeze。从控制台输入所需数量的值。

于 2013-10-26T09:47:17.020 回答
0

打印然后捕获输入。IE

System.out.print(something);
int i = keyboard.nextInt();
于 2013-10-26T09:47:23.010 回答