对这个循环中的括号感到困惑

时间:2013-12-06 19:50:39

标签: java brackets

这是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;

}

很抱歉,如果这是一个愚蠢的问题,但我对最后的括号感到困惑。

2 个答案:

答案 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