我必须使用方法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;
}
答案 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;
}