class Person
{
private String lastname;
private String firstname;
private int age;
public Person(String last,String first,int a)
{
this.lastname =last;
this.firstname =first;
this.age =a;
}
public Person(String last,String first,int a)
{
this.lastname =last;
this.firstname =first;
this.age =a;
}
public void display()
{
System.out.println("lastname"+lastname);
System.out.println("firstname"+firstname);
System.out.println("age"+age);
}
public String getlast()
{
return lastname;
}
} class objSortApp
{ private Person[] a;
private int elems;
public objSortApp(int max)
{
a=new Person[max];
elems=0;
}
public void display()
{
for(int i=0;i<elems;i++)
a[i].display() ;
System.out.println(" ");
}
public void insert(String last,String first,int a)
{
a[elems]=new Person(last,first,a);
elems++;
}
public void insertSort()
{
Person temp;
int in=0,out;
for(out=1;out<elems;out++)
{
temp=a[out];
while(in>0 && a[in-1].getlast().compareTo( temp.getlast() )>0)
{
a[in-1]=a[in];
in--;
}
a[in]=temp;
}
}
public static void main(String[] args)
{int maxsize=100;
objSortApp obj=new objSortApp(maxsize);
obj.insert( "wang","wei",18);
obj.insert( "zhao","da",28);
obj.insert( "li","kai",20);
obj.insert( "ding","hui",21);
obj.insert( "liu","bang",20);
obj.insert( "xiang","21",20);
obj.display() ;
obj.insertSort() ;
obj.display() ;
}}
划线部分呢显示,表达式类型必须为数组类型,但他解析为int 类型
{
private String lastname;
private String firstname;
private int age;
public Person(String last,String first,int a)
{
this.lastname =last;
this.firstname =first;
this.age =a;
}
public Person(String last,String first,int a)
{
this.lastname =last;
this.firstname =first;
this.age =a;
}
public void display()
{
System.out.println("lastname"+lastname);
System.out.println("firstname"+firstname);
System.out.println("age"+age);
}
public String getlast()
{
return lastname;
}
} class objSortApp
{ private Person[] a;
private int elems;
public objSortApp(int max)
{
a=new Person[max];
elems=0;
}
public void display()
{
for(int i=0;i<elems;i++)
a[i].display() ;
System.out.println(" ");
}
public void insert(String last,String first,int a)
{
a[elems]=new Person(last,first,a);
elems++;
}
public void insertSort()
{
Person temp;
int in=0,out;
for(out=1;out<elems;out++)
{
temp=a[out];
while(in>0 && a[in-1].getlast().compareTo( temp.getlast() )>0)
{
a[in-1]=a[in];
in--;
}
a[in]=temp;
}
}
public static void main(String[] args)
{int maxsize=100;
objSortApp obj=new objSortApp(maxsize);
obj.insert( "wang","wei",18);
obj.insert( "zhao","da",28);
obj.insert( "li","kai",20);
obj.insert( "ding","hui",21);
obj.insert( "liu","bang",20);
obj.insert( "xiang","21",20);
obj.display() ;
obj.insertSort() ;
obj.display() ;
}}
划线部分呢显示,表达式类型必须为数组类型,但他解析为int 类型
{
a[elems]=new Person(last,first,a);
elems++;
}
在这个方法里的局部变量 a 和objSortApp类属性a 同名了,在方法里使用是局部优先,就是说在insert方法中使用a时,
虚拟机认为是形参a,
在方法中用a数组,可用this来引用,应该这样调用:a[elems]=new Person(last,first,this.a);