2015-09-27 91 views
-9

我有这样的程序设置和我需要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 
+1

使用大括号。 'if'后面有两条语句。 – user2864740

+0

我试过了,但它不断给我提供越来越多的错误 –

+0

这根本不是合适的Java语法。 'if'后面的表达式应该是*'boolean' *,并且不应该在else之后有一个表达式(在括号中),只有一个语句。请参阅[官方教程](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html)。 – RealSkeptic

回答

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十岁上下,你最终用(例如方法命名)

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

现在我们需要来包装我们的条件括号内为()'而非使用赋值运算符“=”我们应该用比较操作符'== '返回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"); 
}