这是Coding bat(Java版本)中的问题:: 给定一个int数组,如果数组在某个地方包含2,则返回true。 has22({1,2,2})→真 has22({1,2,1,2})→false has22({2,1,2})→false
这是我的解决方案:
public boolean has22(int[] nums) {
for (int i=0; i<nums.length-1;i++) {
if (nums[i]==2 && nums[i+1]==2) {
return true;
}
else {
return false;
}
}
}
这不会编译..
public boolean has22(int[] nums) {
for (int i=0; i<nums.length-1;i++) {
if (nums[i]==2 && nums[i+1]==2) {
return true;
}
else {
}
}
return false;
}
很抱歉,如果这是一个愚蠢的问题,但我对最后的括号感到困惑。
答案 0 :(得分:1)
想象一下您的参数为空或null
的情况。您的第一个方法无法编译,因为它不会为所有个案返回boolean
值。
您的第二个方法编译,因为在迭代完成后它将在任何情况下返回boolean
值。
答案 1 :(得分:1)
public boolean has22(int[] nums)
{
for (int i=0; i<nums.length-1;i++)
if (nums[i]==2 && nums[i+1]==2)
return true;
return false;
}
你可以像上面那样编写程序,不需要大括号。
对于每个条件语句,如果我们想要将多个语句与任何条件语句相关联,则一个语句始终存在,然后我们提供{}大括号,例如
如果(某些条件)
stmt1;
不需要大括号,但如果不止一个陈述那么
如果(某些条件)
{
stmt1;
stmt2;
}
所以永远记住不止一个语句必须强制并且避免在打开一个支架同时关闭时出现问题并在其中写入它会让你放松一下。 谢谢 asif aftab