我有这个问题:
该方法接受整数数组作为其输入,并返回一个新数组,该数组是输入数组的排列.方法fix34重新排列输入数组,使得每3个后面紧跟4(例如,如果在位置i处有3,则在位置i + 1处将存在4).该方法保留3s的原始位置,但可以移动任何其他数字,移动最小数量的数字.关于输入的假设:
好的,所以这就是我写的:
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位置?!
谢谢