我的代码有问题,我无法摆脱循环。我必须创建一个程序,我输入一个数字然后我被要求输入一个大于第一个值的奇数值。例如我输入12,并且为了使程序结束,我必须输入13,15,17或任何大于12的奇数。如果我输入一个数字,它甚至会告诉我再试一次。如果我输入一个低于值(12)的奇数(3),它告诉我必须输入一个大于12的值。
我知道这个程序的逻辑是如何运作的,我认为我做得对。 好的,当我运行程序并输入12例如,然后输入下一个值(15)时,它会执行它应该执行的操作。但我输入12,然后输入一个低于12的数字,如3或或偶数而不是大于12的奇数值,它一直告诉我再试一次,即使我输入一个好的值,如15,基本上循环不断重复它一遍又一遍地自我。
我是java的新手,所以我很难弄清楚我做错了什么。我已经研究了while循环,但我无法弄清楚如何摆脱循环。
到目前为止这是我的代码。
import java.util.*;
public class bonus2 {
static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
System.out.print("Please Enter any number: ");
int theValue = getBigOddValue(0);
System.out.printf("The Value gotten was %d. \n", theValue);
}
private static int getBigOddValue(int value) {
value = input.nextInt();
System.out.printf("Enter an odd number greater than " + value + ": ");
int cutoff = input.nextInt();
int val = cutoff;
while (val % 2 == 0){
System.out.printf("The number is even. Try again: ");
input.nextInt();
}
while (val<value){
System.out.printf("The number must be greater than " + value
+ ". Try again: ");
input.nextInt();
}
return cutoff;
}
SAMPLE RUNS(我的跑步应该如何)。
**Call (and return displayed):**
theValue =getBigOddValue(14);
System.out.printf("The value gottenwas %d.\n",theValue);
**Machine-user interaction of above:**
Enter an odd number greater than 14: 2
The number is even. Try again: 28
The number is even. Try again: 11
The number must be greater than 14. Try again: 3
The number must be greater than 14. Try again: 18
The number is even. Try again: 9
The number must be greater than 14. Try again: 19
The value gotten was 19.
答案 0 :(得分:4)
您需要将input.nextInt()
分配给您的值变量。
while (val % 2 == 0){
System.out.printf("The number is even. Try again: ");
val = input.nextInt();
}
答案 1 :(得分:0)
private static int getBigOddValue(int value) {
value = input.nextInt();
System.out.printf("Enter an odd number greater than " + value + ": ");
int cutoff = input.nextInt();
int val = cutoff;
while (val % 2 == 0){
System.out.printf("The number is even. Try again: ");
val = input.nextInt();
}
while (val<value){
System.out.printf("The number must be greater than " + value
+ ". Try again: ");
val = input.nextInt();
}
return val;
}
你没有改变val的值,这就是原因。 并且返回值,而不是切断。