Java 尝试测试输入是奇数还是偶数

Java 尝试测试输入是奇数还是偶数,java,methods,while-loop,Java,Methods,While Loop,我试图测试输入是奇数还是偶数。程序说,如果输入是偶数,则继续,直到输入是奇数。当它是奇数时,它停止程序。但这个计划并没有停止。有人知道吗 private static Scanner scanner = new Scanner(System.in); public static void main(String[] args) { while (isEven()) { if (isEven()) { isEven(); } else

我试图测试输入是奇数还是偶数。程序说,如果输入是偶数,则继续,直到输入是奇数。当它是奇数时,它停止程序。但这个计划并没有停止。有人知道吗

private static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
    while (isEven()) {
        if (isEven()) {
            isEven();
        } else {
            System.out.println(" You added an odd number, done!");
            return;
        }
    }
}
public static boolean isEven(){
    int a = scanner.nextInt();
    if (a%2 ==0){
        System.out.println("You added an even number, go on");
    }
    return true;
}

}

您应该重写此代码,因为代码包含不正确的逻辑。 符合您的要求的正确代码:

private static Scanner scanner = new Scanner(System.in);

public static void main(String[] args) {
    while (true) {
        int number = scanner.nextInt();
        if (isEven(number)) {
            System.out.println("You added an even number, go on");
        } else {
            System.out.println(" You added an odd number, done!");
            return;
        }
    }
}

private static boolean isEven(int number) {
    return number % 2 == 0;
}
您最好简化所有这些,不需要多次调用您的方法:

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);

    while (writeAndCheckEven(Integer.parseInt(scanner.nextLine()))) {
        System.out.println("You added an even number, go on");
    }

    System.out.println("You added an odd number, done!");
}

private static boolean writeAndCheckEven(int number) {
    return number % 2 == 0;
}
  • 如果之后没有更多的代码,则不需要使用
    返回
  • 您可以直接使用参数中的
    扫描仪
  • 不要同时使用
    while
    if
    这两种方法,因为它们不能满足您的需要

对于奇数,你的
isEven
总是返回
true
偶数。在循环内调用
isEven
时,你也跳过了数字。你确定你在主方法中调用
isEven()
的次数足够多吗?我正在使用扫描仪,请检查第一行和第五行。请尝试以下代码:)