为什么我的程序在使用方法时会冻结? (JAVA)

时间:2013-10-26 09:41:42

标签: java function if-statement methods

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

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

P.S。该方法位于代码的底部。

感谢您的帮助!

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

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;
        }
    }

3 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:0)

您正在使用scanner.nextInt() 等待用户输入 未冻结 。从控制台输入所需的值。

答案 2 :(得分:0)

打印然后捕获输入。即

System.out.print(something);
int i = keyboard.nextInt();