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;
}
}
我遇到了不兼容类型的问题 请帮我打印一个奇数甚至没有循环的数字。
答案 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();
}
}