在下是java学习新手,一窍不通学习很捉急,求前辈把这个数组使用的代码每步都给解释一下,救小的一命啊

public class ArrayTest{
public static void main(String[] args){
int[] aaa={23,14,35,71,55,82,41,11,6};
Ary ay1=new Ary(aaa);
ay1.print();
ay1.order();
ay1.print();
for(int m=0;m<aaa.length;m++)
System.out.print("---"+aaa[m]);
System.out.println();
Ary ay2=new Ary(ay1.subAry(2,6));
ay2.print();
}
}
class Ary{
int[] m_ary;
Ary(int[]p){
m_ary=p;
}
void print(){
for(int i=0;i<m_ary.length;i++)
System.out.print(m_ary[i]+" ");
System.out.println();
}
void order(){
int j,temp;
boolean exchange=true;
j=m_ary.length-2;
while(j>=0 && exchange){
exchange=false;
for(int i=0;i<=j;i++)
if(m_ary[i]>m_ary[i+1]){
exchange=true;
temp=m_ary[i];
m_ary[i]=m_ary[i+1];
m_ary[i+1]=temp;
}
j=j-1;
}
}
int[] subAry(int a1,int a2){
int[] sa;
if(a1>=0 && a1<a2 && a2<m_ary.length){
sa=new int[a2-a1+1];
for(int i=0,j=a1;j<=a2;i++,j++)
sa[i]=m_ary[j];
return sa;
}
else{
System.out.println("error index");
return new int[1];
}
}
}

public class ArrayTest{
public static void main(String[] args){
int[] aaa={23,14,35,71,55,82,41,11,6};
Ary ay1=new Ary(aaa);//new一个对象,并将数组传过去
ay1.print();//调用ay1的print()方法,打印数组aaa
ay1.order();//调用ay1的order()方法,排序数组aaa
ay1.print();//打印

//格式化打印,结果为:---6---11---14---23---35---41---55---71---82
for(int m=0;m<aaa.length;m++)
System.out.print("---"+aaa[m]);
System.out.println();
Ary ay2=new Ary(ay1.subAry(2,6));//截取数组,创建新的对象
ay2.print();//打印
}
}
class Ary{
int[] m_ary;
Ary(int[]p){
m_ary=p;//将构造函数的参数赋值给全局变量
}

//循环打印数组
void print(){
for(int i=0;i<m_ary.length;i++)
System.out.print(m_ary[i]+" ");
System.out.println();
}

//排序数组 冒泡排序
void order(){
int j,temp;
boolean exchange=true;
j=m_ary.length-2;
while(j>=0 && exchange){
exchange=false;
for(int i=0;i<=j;i++)//从头到索引为j结束
if(m_ary[i]>m_ary[i+1]){//判断当前索引的值是否比后一个大,若大就拍前面,即从小到大,如果要从大到小,只要将>改为<就可以了
exchange=true;
temp=m_ary[i];//将一个值先存起来
m_ary[i]=m_ary[i+1];//将值放到i,这时两个值都一样
m_ary[i+1]=temp;//将存起来的值放到i+1的位置,如果一开始就直接将值覆盖,那么就有一个值丢失,所以用temp存起来,就不会丢了
}
j=j-1;//确认最后一个值为最大了,就没必要在接下去的流程里比较了
}
}
int[] subAry(int a1,int a2){
int[] sa;
if(a1>=0 && a1<a2 && a2<m_ary.length){//确定这两个索引在有效的范围内
sa=new int[a2-a1+1];//创建新数组,索引为2到6是5位,一般我们数数是从1开始的,往往会忽略了0,它也占一位值
for(int i=0,j=a1;j<=a2;i++,j++)
sa[i]=m_ary[j];//循环给新数组赋值
return sa;
}
else{
System.out.println("error index");
return new int[1];
}
}
}

如果还不懂,就提出来
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-03
类和对象、成员你明白吗?
相似回答