java-" - 1"的位置

Unk*_*ser 2 java

我有这个问题:

该方法接受整数数组作为其输入,并返回一个新数组,该数组是输入数组的排列.方法fix34重新排列输入数组,使得每3个后面紧跟4(例如,如果在位置i处有3,则在位置i + 1处将存在4).该方法保留3s的原始位置,但可以移动任何其他数字,移动最小数量的数字.关于输入的假设:

  • 该数组包含相同数量的3和4(每3个有4个)
  • 阵列中没有两个连续的3
  • 在某个位置i的3的匹配4位于j> i的位置j

好的,所以这就是我写的:

public class Fix34 {

public static void main(String[] args){
    int [] args1 ={3,1,2,3,5,4,4};
    int[] args11=fix34(args1);
    for (int i = 0; i<=args11.length-1;i++ ){
        System.out.print(args11[i]+" ");}}




public static int pos (int[] arr){
    int i= arr.length-1;
    while (arr[i]!=4){
        i=-1;
        }
    return i;
}


public static int[] fix34(int[] nums){
    for(int i = 0; i<=nums.length-1; i++){
        if (nums[i] == 3){
            nums[pos(nums)]=nums[i+1];
            nums[i+1]=4;

        }

    }
    return nums;
}

}
Run Code Online (Sandbox Code Playgroud)

当我插入这样的{3,2,1,4}数组时,它可以工作,但是在代码中编写的数组中,它给出了错误消息:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
    at Fix34.pos(Fix34.java:15)
    at Fix34.fix34(Fix34.java:25)
    at Fix34.main(Fix34.java:6)
Run Code Online (Sandbox Code Playgroud)

为什么阵列到达-1位置?!

谢谢

Jen*_*der 6

你在这里设置为-1:

i=-1;
Run Code Online (Sandbox Code Playgroud)