黑马程序员技术交流社区
标题:
数组中的问题
[打印本页]
作者:
王章亚
时间:
2012-5-29 20:46
标题:
数组中的问题
/**
* 有序的插入数据
* @param value 要插入的数值
*/
public static void orderInsertNum(int value){
int i;
for(i=0;i<elements;i++){
if(arr[i]>value)
break;
}
for(int j=elements;j>i;j--){
arr[j]=arr[j-1];
}
arr[i]=value;
}
运行的结果为什么会出错啊!求帮忙
作者:
黑马—陈磊
时间:
2012-5-29 20:54
/**
* 有序的插入数据
* @param value 要插入的数值
*/
public static void orderInsertNum(int value){
int i;
for(i=0;i<elements;i++){
if(arr[i]>value)
break;
}
for(int j=elements;j>i;j--){
arr[j]=arr[j-1];
}
arr[i]=value;
elements++;
}
加上elements++;
作者:
李哲
时间:
2012-5-29 22:11
java中,数组的长度不能改变。
如果你要插入一个元素,那么原来的一个元素就会丢失。
下面是我的代码,最后一个元素丢失。
public class EnumTest {
/**
* @param args
*/
public static void main(String[] args) {
int[] add={1,2,3,4,6,7};
orderInsertNum(5,add);
for (int i : add) {
System.out.println(i);
}
}
public static void orderInsertNum(int value,int[] arr){
int i;
for(i=0;i<arr.length;i++){
if(arr[i]>value)
break;
}
for(int j=arr.length-1;j>i;j--){
arr[j]=arr[j-1];
}
arr[i]=value;
}
}
复制代码
作者:
伊文龙
时间:
2012-5-29 22:18
表示没看懂楼主的帖子,elements在哪儿定义的,arr从哪儿来的?出的什么错?你怎么运行的??
把完整的带码贴出来吧.....
作者:
王章亚
时间:
2012-5-30 10:17
不好意思少写了一些代码
public class MyArray {
private static int[] arr;
private static int elements;// 数组内的有效数据。
public MyArray() {
arr = new int[10];
}
/**
* 有序的插入数据
*
* @param value
* 要插入的数值
* @return
*/
public static int[] orderInsertNum(int[] arr, int value) {
int i;
Arrays.sort(arr);
for (i = 0; i < arr.length; i++) {
if (arr[i] > value)
break;
}
for (int j = arr.length - 1; j > i; j--) {//数组角标数为长度减1,要不角标越界,就挂了。
arr[j] = arr[j - 1];
}
arr[i] = value;
return arr;
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2