数组1编码Bat unlucky1(java)挑战

pdtvr36n  于 2023-01-07  发布在  Java
关注(0)|答案(2)|浏览(105)

我是一名正在上计算机科学课的高中四年级学生。作为家庭作业,我们必须为某些CodingBat创建解决方案(练习编码网站)问题。我遇到了这个问题的问题,其中一些包括数组的OutOfBounds。根据我的代码,我不太明白为什么会发生这种情况。(下面)是我为Array-1(java)中的unlucky 1创建的CodingBat问题的解决方案,它将挑战描述为:“我们假设数组中1后面紧跟3是“不幸的”1。如果给定数组的前2个或后2个位置包含不幸的a,则返回true。

public boolean unlucky1(int[] nums) {
  int i = 0;
  for(i = 0; i < nums.length; i++)
    if(nums[i-1] == 1 && nums[i] == 3)
    {
      return true;
    }
    return false;
}
nlejzf6q

nlejzf6q1#

问题陈述是“如果给定数组的前2个或后2个位置包含不幸运的a,则返回true ",所以你甚至不需要循环--你只需要检查数组的前两个和后两个元素:

public boolean unlucky1(int[] nums) {
    return nums != null &&
           nums.length >= 2 &&
           (nums[0] == 1 && nums[1] == 3 ||
            nums[nums.length - 2] == 1 && nums[nums.length -1] == 3);
}
6ojccjat

6ojccjat2#

下面的代码是正确的方法。

0.public static boolean unlucky1(int[] nums){  //Firstly,declare the method 
                                               "static"
    1.  int length = nums.length;//Get the array length.
 
    2.if((nums[0] == 1 && nums[1] == 3) && ( nums[length - 2] == 1 && 
                                             nums[length] -1  == 3)){
    3.      return true;        
                } 
    4.  return false;       
                }

在第2行中,您的代码为:“如果(数字[i-1] == 1 &数字[i] == 3)";
它显示arrayoutofbound是因为起始数组索引是0,并且您在if语句中进行了decaled

" if(nums[0-1]...)which says if nums[-1] which is out of bounds."

此外,要检查数组的最后2个数字,请执行以下操作:

( nums[length - 1] == 1 && nums[length] == 3)) where : 

               " nums[length - 2] == 1" 
      checks 1 value before the last array value 
                         
                     and 
               " nums[length] - 1 == 3 "
             checks the last array value

相关问题