只是一个声明:我是java的初学者。
编写一个名为numUnique的方法,该方法将三个整数作为参数,并返回三者中唯一整数的数量。例如,调用numUnique(18,3,4)应该返回3,因为参数有3个不同的值。相比之下,调用numUnique(6,7,6)将返回2,因为三个参数中只有2个唯一数字:6和7。
public int numUnique(int x,int y,int z){
if(x==y||y==z){
}
return 1;
else if(x!=y||y!=z){
}
return 2;
}
我对if和return之间的关系感到非常困惑。我总是把return放在if语句中。但是我不明白为什么它会生成一条错误信息。如果有什么东西满足,我会在循环中返回。为什么呢错误。但另一方面,println语句可以放在for循环中。
另一个问题,因为这个问题,我试图尝试使用if else.But我的第一个条件是if和我返回它。所以我放置了其他如果在第一次返回后,它再次给我错误。
我将感谢有人会向我解释,我将自行更改代码。请不要给我完整的代码。谢谢。
编辑* 顺便说一句,我阅读了所有的评论,我终于理解了。这是我自己编写的代码(:
public static int numUnique(int x, int y, int z) {
if(x==y && y==z){
return 1;
}else if(x==y && y!=z || y==z && z!=x || x==z && y!=z ){
return 2;
}
return 3;
}
答案 0 :(得分:2)
return语句应放在大括号内。
答案 1 :(得分:2)
为了让您清楚地了解“返回”语句,我会说在一个代码块中只能有一个返回语句,即{...}。
“return”语句用于返回调用者,它必须是块的最后一个语句。
正如您所建议的那样,我没有向您提供完整的代码,而是让您了解“return”声明的用法。
在你的代码中,你在一个块中写了两个“return”语句。
答案 2 :(得分:1)
您想要的语法如下所示:
public static int numUnique(int x,int y,int z){
if(x==y||y==z){
return 1;
}else if(x!=y||y!=z){
return 2;
}
return 3;
}
也许这段代码更容易理解:
public static int numUnique(int x, int y, int z) {
if (x == y && x == z && y == z) {
return 3;
} else if (x != y && x != z && y != z) {
return 1;
}
return 2;
}
伪代码
if( condition ){
// do something if condition is true
}
伪代码如果那么
if( condition){
// do something
}else{
// do something if condition is false
}
Pseudocode elseif
if( condition ){
// do something
}else if(condition2){
// do something, only if condition2 is true, if condition 1 is true, you never will be here
}else{
// do something, your only here if the two conditions above were false
}
一个return语句,会不时地执行(有一些异常,例如:finally块)
答案 3 :(得分:1)
我认为您需要在if-else块中写入return语句,否则它将始终返回1
答案 4 :(得分:0)
因为如果是条件流,我可能会或可能不会运行(取决于条件),
但是如果你的方法有返回类型,它应该在每种情况下返回。但在后一种情况下,(如果条件是假的),它不会找到任何回报。
所以,如果你写
public int value(boolean flag){
if(flag){
return 0; //only reachable if flag is true, else value can not return from here
}
}
这是错误的,因为如果flag为false,则不会返回任何内容。因此,您必须在else
或if
阻止结束后提供退货
答案 5 :(得分:0)
使用Set
只存储一次值的事实......
public int numUnique(int x,int y,int z){
Set<Integer> number = new HashSet<Integer>();
number.add(x);
number.add(y);
number.add(z);
return numbers.size();
}
答案 6 :(得分:0)
首先,你的回复超出了if
陈述,它们应该在里面。因为如果你写:
if(Something) {
}
return 1;
然后将始终返回1,因为if
为空。如果您只想return 1
if(Something)
,请将其写在if
正文中:
if(Something) {
return 1;
}
其次,你的逻辑不好。你需要检查:
您需要涵盖所有情况。
答案 7 :(得分:0)
您必须将return语句放在if和else中的块中
public int numUnique(int x,int y,int z){
if(x==y||y==z){
return 1;
}
else if(x!=y||y!=z){
return 2;
}
}
它失败了,因为编译器认为你在每个路径中都没有函数的return语句。
答案 8 :(得分:0)
您的代码格式不正确:
if-else语句如下:
if { code }
else { code }
因此,if
和else
块成对。但你有:
if (condition) { code }
code
else { code }
code
因此,单词code
上方的else
会破坏此对,else
仍然是孤立的,因此您的程序在语法上是不正确的。
你“想”做:
if (x==y || y == z) {
return 1;
}
else if (x != y || y != z) {
return 2;
}
此外,如果if
(或else
)块只有一行,则可以删除括号:
if (x==y || y == z)
return 1;
else if (x != y || y != z)
return 2;
更重要的是,你的算法不能解决你的问题,¿3个独特的价值怎么样?您应该检查更多情况(所有差异,所有等于或仅一个不同)。