如果x和y均为“ true”,我只想返回true。
我想使用switch / case方法,而不是简单的if / else。
但是我无法获得接受返回结果的方法。
你们有个主意吗?
public class test2 {
public static boolean f(boolean x, boolean y){
switch(x + "-" + y){
case "true-false":
return false; //i also tried "return x" or "return y"
case "false-true":
return false;
case "true-true":
return true;
case "false-false":
return false;
}
}
public static void main(String[]args){
f(false,true);
}
}
答案 0 :(得分:2)
首先,程序原样无法编译。编译器将抱怨方法f
缺少return语句。 switch
是穷举性的,但是编译器无法推断出这种穷举性,因此,如果没有case
匹配,则会抱怨缺少返回。一种可能的解决方案是将default
的情况添加为RamPrakash shows in his answer。另一种可能性是在方法末尾添加一个return
。我认为,这两种解决方案都是次优的,稍后再讨论。
使用给定的修复程序,代码可以按预期工作。由于从不打印结果,因此不会在屏幕上显示结果。对该程序进行稍作修改的版本即可获得预期的结果:
class Ideone {
public static boolean f(final boolean x, final boolean y) {
switch (x + "-" + y) {
case "true-false":
return false;
case "false-true":
return false;
case "true-true":
return true;
case "false-false":
return false;
}
return false;
}
public static void main(final String[] args) {
System.out.println(f(false, false));
System.out.println(f(false, true));
System.out.println(f(true, false));
System.out.println(f(true, true));
}
}
我会建议一种不同的解决方案:与其构建两个参数的String
表示,不如返回两个参数x && y
的AND乘积。例如,它摆脱了次优的return
(尽管在方法结尾或在default
情况下)。另一方面,这更有效。计算时间和内存消耗。
答案 1 :(得分:0)
您的代码太复杂了,可以简单地更改为:
public class test2 {
public static boolean f(boolean x, boolean y){
return x && y;
}
public static void main(String[]args){
f(false,true);
}
}
答案 2 :(得分:0)
应该有一个默认的return语句,因为它在询问return语句,所以不会编译。
public class Test {
public static boolean f(boolean x, boolean y){
switch(x + "-" + y){
case "true-false":
return false; //i also tried "return x" or "return y"
case "false-true":
return false;
case "true-true":
return true;
case "false-false":
return false;
default: return false;
}
}
public static void main(String[]args){
System.out.println(f(false,true));
}
}
答案 3 :(得分:-1)
更好的编码方式是return x && y
,而不是在字符串中使用switch。无需将布尔值转换为字符串。有多种方法可以实现OP想要完成的任务。
public class Main
{
public static boolean f(boolean x, boolean y){
return x && y;
}
public static void main(String[]args){
System.out.println(f(false,true));
}
}
问题中的代码无法编译。 您可以通过多种方法来解决代码编译错误
按#1修复编译错误
将default
的大小写添加到switch
,如下所示
public class Main
{
public static boolean f(boolean x, boolean y){
switch(x + "-" + y){
case "true-false":
return false; //i also tried "return x" or "return y"
case "false-true":
return false;
case "true-true":
return true;
case "false-false":
return false;
default:
return false;
}
}
public static void main(String[]args){
System.out.println(f(false,true));
}
}
按#2修复编译错误
public class Main
{
public static boolean f(boolean x, boolean y){
switch(x + "-" + y){
case "true-false":
return false; //i also tried "return x" or "return y"
case "false-true":
return false;
case "true-true":
return true;
case "false-false":
return false;
}
return false;
}
public static void main(String[]args){
System.out.println(f(false,true));
}
}
注意: :在我的示例中,我更改了类名。
如果我是你,那么我会选择return x && y
答案 4 :(得分:-1)
在case语句的末尾添加默认值。
default:
return true;
然后在控制台中查看函数返回结果,请使用System.out.println()
在控制台中查看。
System.out.println(f(false,true));