如何从方法中提取整数?

时间:2014-08-24 19:55:12

标签: java loops methods

我必须使用方法public static int getMenuOption,我无法让它返回一个整数。

它必须以我拥有它的方式循​​环,如果选择正确或连续错误3次你将退出,这是重复循环。

我无法理解如何将intValue拉出循环?

public static int getMenuOption() {
    Scanner theScanner = new Scanner(System.in);
    for (int i = 0; i < 3; i++) {
        int intValue = 1;
        while (intValue > 0 && intValue < 6) {
            System.out.println("Menu");
            System.out.println("1. Add");
            System.out.println("2. Subtract");
            System.out.println("3. Multiply");
            System.out.println("4. Divide");
            System.out.println("5. Generate a random number");
            System.out.println("6. Quit\n");
            System.out.print("What would you like to do? ");
            intValue = theScanner.nextInt();
            if (intValue > 6 || intValue < 1) {
                System.out.println("I'm sorry, " + intValue +
                    " wasn't one of the options");
            }

        }
    }

    return intValue;
}

2 个答案:

答案 0 :(得分:1)

看起来你的状况是错误的。

应该是:

while(intValue <=0 || intValue >6)

因为你希望保持循环直到得到有效的输入(1到6之间)。

此外,还不清楚外部for循环是什么。您应该删除它,因为在while循环找到有效输入之后,该方法应该返回。

public static int getMenuOption() {
    Scanner theScanner = new Scanner(System.in);
    int intValue = 1;
    while (intValue <= 0 || intValue > 6) {
        System.out.println("Menu");
        System.out.println("1. Add");
        System.out.println("2. Subtract");
        System.out.println("3. Multiply");
        System.out.println("4. Divide");
        System.out.println("5. Generate a random number");
        System.out.println("6. Quit\n");
        System.out.print("What would you like to do? ");
        intValue = theScanner.nextInt();
        if (intValue > 6 || intValue < 1) {
            System.out.println("I'm sorry, " + intValue +
                " wasn't one of the options");
        }

    }

    return intValue;
}

答案 1 :(得分:0)

你的情况有误。

成功: while(intValue <= 0 || intValue > 6)

同样在for循环之外声明intValue,如下所示:

Scanner theScanner = new Scanner(System.in);
int intValue;
for (int i = 0; i < 3; i++) {
    intValue = 1;

这样做之后你应该没事。

编辑:

public static int getMenuOption() {
    Scanner theScanner = new Scanner(System.in);
    int intValue = 1;
    for (int i = 0; i < 3; i++) { //Useless for loop.
        intValue = 1; //reset var each time
        while (intValue <= 0 || intValue > 6) {
            System.out.println("Menu");
            System.out.println("1. Add");
            System.out.println("2. Subtract");
            System.out.println("3. Multiply");
            System.out.println("4. Divide");
            System.out.println("5. Generate a random number");
            System.out.println("6. Quit\n");
            System.out.print("What would you like to do? ");
            intValue = theScanner.nextInt();
            if (intValue > 6 || intValue < 1) {
                System.out.println("I'm sorry, " + intValue +
                    " wasn't one of the options");
            } else {
                return intValue;
            }

        }
    }

    return intValue;
}

我相信这是您想要的代码:

编辑:

public static int getMenuOption() {
    Scanner theScanner = new Scanner(System.in);
    int count = 0;
    int intValue = 1;
        while (intValue <= 0 || intValue > 6) {
            System.out.println("Menu");
            System.out.println("1. Add");
            System.out.println("2. Subtract");
            System.out.println("3. Multiply");
            System.out.println("4. Divide");
            System.out.println("5. Generate a random number");
            System.out.println("6. Quit\n");
            System.out.print("What would you like to do? ");
            intValue = theScanner.nextInt();
            if (intValue > 6 || intValue < 1) {
                System.out.println("I'm sorry, " + intValue +
                    " wasn't one of the options");
                count++;
            } else if (count == 3 || intValue <= 6 && intValue >= 1) {
                return intValue;
            }

    return intValue;
}