Java fix34 codingbat

时间:2015-08-01 04:30:56

标签: java

我目前正试图在http://codingbat.com/prob/p159339

上解决此问题

每当我执行代码时,嵌套的for循环都会超出索引,即使我指示它在array.length之前停止一个值。

为什么不起作用?

看看代码:

    public static void main(String args[]){


    int [] nums = {3,5,9,10,7,4,9,2,3,0,4,2,1};
    System.out.println(Arrays.toString(fix34(nums)));
}   
public static int[] fix34(int nums[]){
for(int i=0; i<nums.length; i++){

for(int k=0; i<nums.length; k++){
    System.out.println(Arrays.toString(nums));
    System.out.println(i);
    System.out.println(k);
    if(nums[i]==3 & nums[k]==4){
    int tmp;
    tmp= nums[k];
    nums[k]= nums[i+1];
    nums[i+1]=tmp;
    tmp=0;

if(k==13){
break;  
}
        }
    }



}
return nums;
}

4 个答案:

答案 0 :(得分:2)

for(int k=0; i<nums.length; k++){更改为for(int k=0; k<nums.length; k++){。您正在使用i进行比较。它应该是k

答案 1 :(得分:0)

for(int i = 0; i < nums.length; i++)
  {
  if (nums[i] == 3)
  {
    for(int j = 0 ; j < nums.length; j++)
    {
     if (nums[j] == 4 && nums[j - 1] != 3)
     {    
      int temp = nums[i+1];
      nums[i+1] = nums[j];
      nums[j] = temp;
     }
    }
   }
  }
  return nums;

答案 2 :(得分:-1)

您可以尝试...

public int[] fix34(int[] nums) {

  for(int i=0;i<nums.length;i++)
  {
    //checking for the value of 4
    if(nums[i]==4)
    {
      //looping again through the loop
      for(int j=0;j<nums.length;j++)
      {
        //checking for the value of 3
        if(nums[j]==3)
        {
          //swapping the elements
          int temp=nums[i];
          nums[i]=nums[j+1];
          nums[j+1]=temp;
          }

      }
    }
  }
  return nums;
}

答案 3 :(得分:-2)

我是这样做的:

public int[] fix34(int[] nums) {
    int temp;

    for (int i = 0; i < nums.length; i++) {
        if (nums[i] == 3 && i != nums.length - 1) {
            for (int j = 0; j < nums.length; j++) {
                if (j != 0 && nums[j] == 4 && nums[j - 1] != 3) {
                    temp = nums[i + 1];
                    nums[i + 1] = nums[j];
                    nums[j] = temp;
                }
            }
        }
    }
    return nums;
}