圣塞西尔学院学生 2021-09-14 15:05 采纳率: 57.1%
浏览 62

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日

悬赏问题

  • ¥15 付费求做一个自助抢单插件
  • ¥15 bat批处理,关于数据复制问题
  • ¥50 同步两个不同结果的array中某些属性
  • ¥15 悬赏15远程操控解决问题
  • ¥15 CST复制的模型无法单独修改参数?
  • ¥15 前端页面想做个定时任务,但是使用requestAnimationFrame,setinterval和settimeout都不行
  • ¥15 根据以下文字信息,做EA模型图
  • ¥15 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器
  • ¥15 vscode程序一直报同样的错,如何解决?
  • ¥15 关于使用unity中遇到的问题