在不使用循环的情况下检查数字是偶数还是奇数

时间:2014-09-30 17:50:45

标签: java

class bool {

    public static void main(String arg[]) {

        int n = 2;

        boolean b = (n % 2 == 0);

        System.out.print(b);

        String s = String.valueOf(b);

        switch (s) {

            case true:

                System.out.println("even");

                break;

            default:
                System.out.println("odd");

                break;

        }


}

我遇到了不兼容类型的问题 请帮我打印一个奇数甚至没有循环的数字。

4 个答案:

答案 0 :(得分:1)

您的类型不兼容,因为当切换表达式为boolean true时,您尝试使用String案例标签s。你甚至不需要String;只需使用b本身。 boolean不允许作为切换表达式,但如果您拥有switch,则不需要boolean。只需使用if声明。

答案 1 :(得分:1)

在String中的情况下使用的变量,但在每种情况下,您使用的是布尔值:

public static void main(final String arg[]) {
    final int n = 2;
    final boolean b = n % 2 == 0;
    System.out.print(b);
    System.out.println(b ? "even" : "odd");
}

答案 2 :(得分:0)

您无法在Java 6或更低版本中启用String值。你想要的是

if (b) {
   System.out.println("even");
} else {
   System.out.println("odd");
}

String s=String.valueOf(b);没用。

还要考虑为变量使用更具描述性的名称。 b没有提供有关此变量在代码逻辑中的含义的信息。例如,isEven是一个更好的名称,请查看代码现在的可读性如何:

if (isEven) {
   System.out.println("even");
} else {
   System.out.println("odd");
}

  

我希望在没有任何if else和没有任何循环的情况下执行此操作

奇怪的要求......它只是使代码更不易读,更臃肿。通常,当有超过2个可能的值时,您需要switch。无论如何:

final int result = n % 2;
switch (result) {
case 0:
    System.out.println("even");
    break;
default:
    System.out.println("odd");
}

答案 3 :(得分:0)

不确定我是否正确理解了问题,并且从您的评论看起来您似乎不想使用if / else或switch - 您可以选择使用包装器。

IntWrapper wrapper = new IntWrapper(n);
System.out.println("Is Even ? "+wrapper.isEven());
System.out.println("Is Odd ? "+wrapper.isOdd());

class IntWrapper
{
    private int x;
    public IntWrapper(int x)
    {
         this.x = x;
    }

    public boolen isEven()
    {
         return x%2==0;
    }

    public boolean isOdd()
    {
         return !isEven();
    }
}