想问一下这段代码错哪了,正确的该怎么写😭
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);
}
}
你的代码 错误的点比较多,直接运行报错的是下标越界,也就是 数组长度才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); 对数组排序
如果能帮到你,请点下【采纳】,谢啦