错误“别”没有“如果”

时间:2015-09-27 17:53:25

标签: java if-statement

我已经设置了这个程序,我需要帮助解决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:\Users\Desktop\EvenOdd.java:28: error: not a statement
else (c)

C:\Users\Desktop\EvenOdd.java:28: error: 'else' without 'if'
else (c)

2 errors

2 个答案:

答案 0 :(得分:2)

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

我认为这次改写最接近你所拥有的

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-ish,你最终会得到(例如方法命名)

/**
 * 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;
    }
}

答案 1 :(得分:2)

这是一个解决方案

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");

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

这些变化让我们走到了这一步。

elseif

现在我们添加适当的括号,我们很高兴。

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