Java 不能出去做循环

Java 不能出去做循环,java,Java,我的代码有问题,无法跳出循环。我必须创建一个程序,输入一个数字,然后要求输入一个大于第一个值的奇数值。例如,我输入12,为了让程序结束,我必须输入13、15、17或任何大于12的奇数。如果我输入一个数字,它甚至会告诉我再试一次。如果我输入的奇数3小于值12,它告诉我必须输入大于12的值 我知道这个程序的逻辑是如何运作的,我认为我做得对。 好的,当我运行程序,输入12,然后输入下一个值15,它会做它应该做的事情。但我输入12,然后输入一个小于12的数字,比如3或偶数,而不是大于12的奇数,它不断告

我的代码有问题,无法跳出循环。我必须创建一个程序,输入一个数字,然后要求输入一个大于第一个值的奇数值。例如,我输入12,为了让程序结束,我必须输入13、15、17或任何大于12的奇数。如果我输入一个数字,它甚至会告诉我再试一次。如果我输入的奇数3小于值12,它告诉我必须输入大于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;
}
您需要将input.nextInt分配给您的值变量

while (val % 2 == 0){
    System.out.printf("The number is even. Try again: ");
    val = input.nextInt();
}
您需要将input.nextInt分配给您的值变量

while (val % 2 == 0){
    System.out.printf("The number is even. Try again: ");
    val = input.nextInt();
}
您没有更改val的值,这就是原因。 返回val,而不是cutoff

您没有更改val的值,这就是原因。
返回val,而不是切断。

OMG,就这些。哇!这么简单的事情。谢谢你们的帮助非常感谢。@ThomasW-好的,现在每次数字大于'value'18,即使是偶数,我得到的最终输出是:得到的值是18。如果它是18,则应该被检测为偶数,但事实并非如此。。有什么建议吗如果您可以运行代码并运行示例运行,它将帮助您理解我所说的内容。一旦我到达必须输入18的部分,我输入18,然后它告诉我得到的值是18,而不是偶数Try-gain:9,依此类推,直到我输入奇数19.OMG,就这样了。哇!这么简单的事情。谢谢你们的帮助非常感谢。@ThomasW-好的,现在每次数字大于'value'18,即使是偶数,我得到的最终输出是:得到的值是18。如果它是18,则应该被检测为偶数,但事实并非如此。。有什么建议吗如果您可以运行代码并运行示例运行,它将帮助您理解我所说的内容。一旦我到了必须输入18的部分,我输入18,然后它告诉我得到的值是18,而不是偶数,尝试增益:9,依此类推,直到我输入一个奇数19。嘿,好的,现在每次数字大于“值”,即使是偶数,我得到的最终输出是:得到的值是18。如果它是18,则应该被检测为偶数,但事实并非如此。。有什么建议吗?嘿,好吧,现在每次数字大于“值”,即使它是偶数,我得到的最终输出是:得到的值是18。如果它是18,则应该被检测为偶数,但事实并非如此。。有什么建议吗?如果你删除了你的代码,那么这个问题也就无效了。如果安全对你来说很重要,那么保持一个干净而有意义的网站对SO参与者来说很重要。删除你的问题。我不能,因为它说它已经有答案了。写信给meta.stackoverflow.com。他们可以帮助你。如果你删除了你的代码,你也使这个问题无效。如果安全对你来说很重要,那么保持一个干净而有意义的网站对SO参与者来说很重要。删除你的问题。我不能,因为它说它已经有答案了。写信给meta.stackoverflow.com。他们可以帮忙。
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;
}