某昔 2021-09-14 15:05 采纳率: 57.1%
浏览 65

java在数组中插入一个数,使插入后仍保持原有顺序

想问一下这段代码错哪了,正确的该怎么写😭

package k;
import java.util.Scanner;
public class abc {
public static void main(String args[]) {

int arr[]= {1,2,4,5,6};
System.out.println("请输入一个数:");
Scanner cin = new Scanner(System.in);
int m = cin.nextInt();
int end=arr[4];
int newarr[]=new int[5];
if(m>end)newarr[5]=m;
else {
for(int i=0;i<5;i++)
{
if(arr[i]>m) {
int temp1= arr[i];
newarr[i]=m;
for(int j=i+1;j<6;j++)
{
int temp2=arr[j];
newarr[j]=temp1;
temp1=temp2;
};
newarr[i]=arr[i];
break;
}
}
}
System.out.println(newarr);
}
}

  • 写回答

1条回答 默认 最新

  • 峰子哥哥 2021-09-14 15:21
    关注

    你的代码 错误的点比较多,直接运行报错的是下标越界,也就是 数组长度才5,你就取他下标为5的
    下标从0开始,0、1、2、3、4、5,就是长度为6了 超过了本来的长度5
    我给你调整了下,参考以下代码:

    
    import java.util.Arrays;
    import java.util.Scanner;
    
    public class abc {
        public static void main(String args[]) {
            int[] arr = {1, 2, 4, 5, 6};
            System.out.println("请输入一个数:");
            Scanner cin = new Scanner(System.in);
            int m = cin.nextInt();
            int[] newarr = new int[arr.length + 1];
            newarr[arr.length] = m;
            System.arraycopy(arr, 0, newarr, 0, arr.length);
            Arrays.sort(newarr);
            for (int j : newarr) {
                System.out.println(j);
            }
        }
    }
    

    System.arraycopy(arr, 0, newarr, 0, arr.length) 数组copy
    Arrays.sort(newarr); 对数组排序
    如果能帮到你,请点下【采纳】,谢啦

    评论

报告相同问题?

问题事件

  • 创建了问题 9月14日