错误"else"而不"if"



我设置了这个程序,我需要帮助,我得到了2个错误

import java.util.Scanner;
public class EvenOdd { 
    public static void main(String[]args) {
        Scanner keyboard = new Scanner (System.in);
        System.out.print("---EvenOdd--- /n");
        System.out.printf("Enter a whole number: ");
        c = in.nextInt();
    }
    public static EvenOdd (int num) {
        int c = num;
        if (int.class) 
            (c/2)*2 = c;
        System.out.println("is even.");
        else (c)
            System.out.println("is odd");
        return EvenOdd;
    }
}
C:UsersDesktopEvenOdd.java:28: error: not a statement
else (c)
C:UsersDesktopEvenOdd.java:28: error: 'else' without 'if'
else (c)
2 errors

你的else没有意义。首先,你没有使用大括号,而且你的布尔逻辑也没有意义。仅仅添加大括号不会使你的代码编译。

我认为这个重写是最接近你的

public static boolean EvenOdd (int num) {
    // Here your calculation is done
    boolean isEven = (c/2)*2 == c;
    if (isEven) {
        System.out.println("is even.");
    } else if (!isEven) {
        // Using 'else if' for a boolean parameter does not make much sense
        // but i'll leave it here to explain the syntax
        System.out.println("is odd");
    }
    return isEven;
}
然而,最常用的检查奇数或偶数的方法是使用模数运算符。如果我把整个代码写得更像java的话,你就会得到(例如方法命名)
/**
 * Check if the given number is even.
 * @param num the number to check
 * @return whether num is an even number
 */
public static boolean isEven (int num) {
    if ((x % 2) == 0) {
        System.out.println("is even.");
        return true;
    } else {
        System.out.println("is odd");
        return false;
    }
}

这是一个解决方案

public static void main(String[]args)
{
    Scanner keyboard = new Scanner(System.in);
    
    try{
        System.out.println("---EvenOdd---");
        
        System.out.print("Enter a whole number: ");
        int c = keyboard.nextInt();
        
        evenOdd(c);
    }finally{
        keyboard.close();
    }
}
public static void evenOdd(int num)
{
    int c = num;
    if ((c/2)*2 == c){
        System.out.println("is even.");
    }else {
        System.out.println("is odd");
    }
}
输出:

表示输入值5

——EvenOdd

输入整数:5

是奇数

表示输入值4

——EvenOdd

输入整数:4

是偶数。

继续阅读

原始代码有几个问题,我将尝试按行顺序解释它们。

原始代码参考:

public class EvenOdd { 
    public static void main(String[]args) {
        Scanner keyboard = new Scanner (System.in);
        System.out.print("---EvenOdd--- /n");
        System.out.printf("Enter a whole number: ");
        c = in.nextInt();
    }
    public static EvenOdd (int num) {
        int c = num;
        if (int.class) 
            (c/2)*2 = c;
        System.out.println("is even.");
        else (c)
            System.out.println("is odd");
        return EvenOdd;
    }
}

首先是这一行

System.out.print("---EvenOdd--- /n");

在这里使用.print()方法,虽然不是非法的,但没有必要,因为java为我们提供了.println(),它会自动创建一个新行,所以我们不必这样做。(即带有"/n")

System.out.printf("Enter a whole number: ");

接下来使用.printf()方法,该方法打印格式化的输出并接受参数作为参数。您没有使用此方法的任何专有功能,因此我们可以使用.print()实现相同的功能。

c = in.nextInt();

变量in在这个范围内没有定义,我假设您的意思是使用keyboard.nextInt()

public static EvenOdd (int num) {

当一个方法没有返回类型并且与它所在的类同名(区分大小写)时,它是构造函数。构造函数不需要return语句,通常用new ObjectConstructor()语法调用,将值赋给与构造函数类型相同的变量。

if (int.class) 
(c/2)*2 = c;
System.out.println("is even.");
else (c)
System.out.println("is odd");

这个if-else块显然甚至不是java语法。

首先,没有必要将结果强制转换为int,并且条件末尾的分号不属于。

删除这些错误将得到:

if (c/2)*2 = c
System.out.println("is even.");
else (c)
System.out.println("is odd");

现在我们需要将条件括在括号' () '中,而不是使用赋值运算符' = ',我们应该使用返回boolean的比较运算符' == '。此外,else子句不需要条件,如果您想使用条件,请查看elseif

这些变化使我们进入这一步。

if ((c/2)*2 == c)
System.out.println("is even.");
else
System.out.println("is odd");

现在我们添加适当的括号,就可以开始了。

if ((c/2)*2 == c){
    System.out.println("is even.");
}else{
    System.out.println("is odd");
}

最新更新