2014-10-09 140 views
-1
class Person 
    { 
    private String lastName; 
    private String firstName; 
    private int age; 
//-------------------------------------------------------------- 
    public Person(String last, String first, int a) 
     {        // constructor 
     lastName = last; 
     firstName = first; 
     age = a; 
     } 
//-------------------------------------------------------------- 
    public void displayPerson() 
     { 
     System.out.print(" Last name: " + lastName); 
     System.out.print(", First name: " + firstName); 
     System.out.println(", Age: " + age); 
     } 
//-------------------------------------------------------------- 
    public String getLast()   // get last name 
     { return lastName; } 
    } // end class Person 
//////////////////////////////////////////////////////////////// 
class ClassDataArray 
    { 
    private Person[] a;    // reference to array 
    private int nElems;    // number of data items 

    public ClassDataArray(int max) // constructor 
     { 
     a = new Person[max];    // create the array 
     nElems = 0;      // no items yet 
     } 
//-------------------------------------------------------------- 
    public Person find(String searchName) 
     {        // find specified value 
     int j; 
     for(j=0; j<nElems; j++)   // for each element, 
     if(a[j].getLast().equals(searchName)) // found item? 
      break;      // exit loop before end 
     if(j == nElems)     // gone to end? 
     return null;     // yes, can't find it 
     else 
     return a[j];     // no, found it 
     } // end find() 
//--------------------------------------------------------------         // put person into array 
    public void insert(String last, String first, int age) 
     { 
     a[nElems] = new Person(last, first, age); 
     nElems++;       // increment size 
     } 
//-------------------------------------------------------------- 
    public boolean delete(String searchName) 
     {        // delete person from array 
     int j; 
     for(j=0; j<nElems; j++)   // look for it 
     if(a[j].getLast().equals(searchName)) 
      break; 
     if(j==nElems)      // can't find it 
     return false; 
     else        // found it 
     { 
     for(int k=j; k<nElems; k++)  // shift down 
      a[k] = a[k+1]; 
     nElems--;      // decrement size 
     return true; 
     } 
     } // end delete() 
//-------------------------------------------------------------- 
    public void displayA()   // displays array contents 
     { 
     for(int j=0; j<nElems; j++)  // for each element, 
     a[j].displayPerson();   // display it 
     } 
//-------------------------------------------------------------- 
    } // end class ClassDataArray 
//////////////////////////////////////////////////////////////// 
class ClassDataApp 
    { 
    public static void main(String[] args) 
     { 
     int maxSize = 100;    // array size 
     ClassDataArray arr;   // reference to array 
     arr = new ClassDataArray(maxSize); // create the array 
            // insert 10 items 
     arr.insert("Evans", "Patty", 24); 
     arr.insert("Smith", "Lorraine", 37); 
     arr.insert("Yee", "Tom", 43); 
     arr.displayA();    // display items 

     String searchKey = "Stimson"; // search for item 
     Person found; 
     found=arr.find(searchKey); 
     if(found != null) 
     { 
     System.out.print("Found "); 
     found.displayPerson(); 
     } 
     else 
     System.out.println("Can't find " + searchKey); 

     System.out.println("Deleting Smith, Yee, and Creswell"); 
     arr.delete("Smith");   // delete 3 items 
     arr.delete("Yee"); 
     arr.delete("Creswell"); 

     arr.displayA();    // display items again 
     } // end main() 
    } // end class ClassDataApp 

在給定示例中,沒有創建對象的人被創建並且它被初始化爲Person找到; found = arr.find(searchKey);但我能夠調用displayperson方法,而不用使用new關鍵字創建對象。這個概念是在java中嗎?在不創建對象的情況下調用類的方法

+1

有一個Person對象在'insert'方法中創建。實際上三個對象被創建,因爲它被稱爲三次。 – immibis 2014-10-09 06:59:11

+0

聲明方法爲靜態 – Amy 2014-10-09 07:00:17

+0

檢查find(searchKey)返回類型的Person對象,稍後使用該對象可以調用其任何方法。我建議你閱讀一個關於java編程的好教程 – vikeng21 2014-10-09 07:08:22

回答

1

不,你錯了。 Person創建不僅一個,但3,因爲你撥打insert()方法3次。你只需要看到這個

public void insert(String last, String first, int age) { 
    a[nElems] = new Person(last, first, age);// new Person created here 
    nElems++;       
} 
相關問題