我想找出一种更有效的方法来创建这个程序。而不是 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);
}
}
}
答案 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来处理案件。