1

我的代码有问题,我无法摆脱循环。我必须创建一个程序,在其中输入一个数字,然后要求我输入一个大于第一个值的奇数值。例如,我输入 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.
4

2 回答 2

4

您需要分配input.nextInt()给您的值变量。

while (val % 2 == 0){
    System.out.printf("The number is even. Try again: ");
    val = input.nextInt();
}
于 2013-05-07T02:10:39.350 回答
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 的值,这就是原因。并返回 val,而不是截止。

于 2013-05-07T02:20:46.400 回答