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 类型

解决方案 »

  1.   

    用this关键字引用a数组,a数组和参数a同名了哦
      

  2.   

    public void insert(String last,String first,int a) 
      { 
      a[elems]=new Person(last,first,a);   
        elems++; 
      } 
    在这个方法里的局部变量 a 和objSortApp类属性a 同名了,在方法里使用是局部优先,就是说在insert方法中使用a时,
    虚拟机认为是形参a,
    在方法中用a数组,可用this来引用,应该这样调用:a[elems]=new Person(last,first,this.a);