日期:2014-05-20  浏览次数:20618 次

数组赋值出现问题,求解答
class circle
{

private int [] data ;//存储环的直径值
public circle(int num)
{
int temp = 0;
data = new int[10];
for(int k=0;k<9;k++)
{
data[k]=k+1;
}

for(int i = 0;i<9;i++)
{
if(data[i]>data[i+1])
{
temp = data[i+1];
data[i+1] = data[i] ;
data[i]=temp;
}
}

}

public void  getlength()
{
System.out.println( data.length);

}
public void getsize()
{
System.out.println( data[0]);

}
public void add(int size)
{
int j;
for( j =0 ;j<9;j++)
{
if(size<data[j])
{
for(int i = 10;i>10;i--)
{

data[i]=data[i-1];
}
data[j]=size;
}

}
if((j+1)<=(9))
data[j+1]=size;
else
System.out.println("数组溢出");
}
public void remove()
{
for(int i =0;i<9;i++)
{
data[i]=data[i+1];
}
}
public void printcircle(int circleno)
{

System.out.println(data[1]);


}
public static void main(String args[])
{

circle c1= new circle(9);

c1.getlength();
c1.getsize();
c1.add(11);
c1.remove();
c1.printcircle(0);

}

}

------解决方案--------------------
问题写在注释里面了,
给楼主亮点建议吧,
第一学会用debug调试,
第二代码里面多点注释,找到了错也没看懂嘛意思。
public void add(int size) {
int j;
for (j = 0; j < 9; j++) {
if (size < data[j]) {
for (int i = 10; i > 10; i--) {

data[i] = data[i - 1];
}
data[j] = size;
}

}
//这里的j=9;最后一次循环j++之后等于9,判断不符合条件然后跳出循环,所以下面那个j+1=10,溢出就正常了。。
j=9;
if ((j + 1) <= (9))
data[j + 1] = size;
else
System.out.println("数组溢出");
}