我怎样才能使这段代码更有效?

时间:2013-08-05 22:55:59

标签: java

我想找出一种更有效的方法来创建这个程序。而不是 if-else语句,是否可以使用其他形式的循环或语句?

以下是代码:

class apples {
  public static void main(String[] args) {
    byte x, y;
    x = 15;
    y = 28;

    boolean state = (true || false);

    if (x == y) {
        System.out.println(state);
    } else if (x > y) {
        System.out.println(state);
    } else if (x < y) {
        System.out.println(state);
    } else {
        System.out.println(state);
    }

  }
}

5 个答案:

答案 0 :(得分:2)

输出始终为true|| true始终为true

删除此行:

boolean state = (true || false);

将其更改为:

  boolean state = (x==y);
    System.out.println(state);

答案 1 :(得分:1)

我认为这只是你想要做的事情的一个例子。如果没有,代码可以由rgettman提到的System.out.println(true);替换。

最后一个当然永远不会被执行,因为数字相等,或者一个更大,所以可以删除它:

if (x == y) {
    System.out.println("They are equal");
} else if (x > y) {
    System.out.println("x is greater");
} else {
    System.out.println("x is smaller");
}

if-then语句的替代方法是:

switch (Integer.compare(x, y))
{
   case -1: System.out.println("x is smaller"); break;
   case 0: System.out.println("They are equal"); break;
   default: System.out.println("x is greater"); // case 1
}

Integer.compare是Java 7及以上版本,在此之前您必须使用Integer.valueOf(x).compareTo(y)

答案 2 :(得分:1)

扩展评论的内容:在if/else序列中,每个条件具有相同的执行块。由于通过几个输入实现了相同的输出(任何输入都是真的会导致输出),你可以压缩这个:

if (x == y) {
    System.out.println(state);
} else if (x > y) {
    System.out.println(state);
} else if (x < y) {
    System.out.println(state);
} else {
    System.out.println(state);
}

进入这个:

if(x == y || x > y || x < y){
    System.out.println(state);
} else { 
    System.out.println(state);
}

这里有两个注释。首先,布尔表达式x == y || x > y || x < y(对于数字类型,如byte,并假定变量已定义),包括所有可能性 - x 必须等于,大于或小于y。这意味着x == y || x > y || x < y 始终为true,因此else块无效。

第二点是,一般来说,当你有这样的东西时,两个执行块是相同的代码:

if(expression){
    doSomething();
} else {
    doSomething();
}

doSomething();代码将始终 执行,无论如何,因此不需要条件,只需调用代码即可完成。

答案 3 :(得分:0)

您没有提供有关state周围逻辑的详细信息。

编写程序的另一种方法是使用Map<Integer, Output>,执行Byte.compareTo(anotherByte)并在地图中查找以获得所需的输出。

答案 4 :(得分:0)

正如其他人所说:

boolean b = (true || false);

始终将b设置为true。我相信这就是你正在寻找的东西:

public static boolean compBytes(byte x, byte y)
{
    return (x.compareTo(y) > 0) ? true : false;
}

但是,只有当您希望<==都返回false时,这才有效。我想你真正想要的是:

public static int compBytes(byte x, byte y)
{
    return x.compareTo(y);
}

然后您可以使用switch statement来处理案件。