不能出去做While While

时间:2013-05-07 02:08:45

标签: java

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

2 个答案:

答案 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的值,这就是原因。 并且返回值,而不是切断。