在排序好的数组中添加一个数字,将添加后的数字插入到数组合适的位置我不会啊,求大神解答,怎么样能把一个数字插入到数组中啊,用JAVA解决
public class xiti4_10 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int mark = 0;
Scanner in = new Scanner(System.in);
System.out.print("数组长度");
int[] a = new int[in.nextInt()];
for (int i = 0; i < a.length; i++) {
a[i] = (int) (Math.random() * 100);
}
java.util.Arrays.sort(a);
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
System.out.print("再输入一个数");
int key = in.nextInt();
for (int i = 0; i < a.length; i++) {
if (key < a[i]) {
mark = i;
}
}
int temp = key;
int[] b = new int[a.length + 1];
b[mark] = temp;
for (int i = mark + 1; i <= b.length - 1; i++) {
b[i + 1] = a[i];
}
for (int i = 0; i < mark; i++) {
b[i] = a[i];
}
System.out.println("插入后:");
for (int i = 0; i < b.length; i++) {
System.out.print(b[i] + " ");
}
}
}
这两行出了问题,指导指导我 谢谢
for (int i = mark + 1; i <= b.length - 1; i++) {
b[i + 1] = a[i];
}
改成
for (int i = mark + 1; i < b.length - 1; i++) {
b[i + 1] = a[i];
}
当 i = b.length - 1的时候i + 1就是b.length
b[b.length]显然溢出了
因为数组的下标是从0开始的,所以数组b最后的元素只到b[b.length - 1]