2017-06-03 32 views
-2

我需要編寫一個代碼,在給出名稱時從數組列表中查找電話號碼。這裏是我目前有:如何在列表數組中找到您知道姓名的電話號碼?

public class Person { 

    private String name; 
    private String number; 

    public Person(String name, String number) { 
     this.name = name; 
     this.number = number; 
    } 

    public String getName() { 
     return this.name; 
    }  

    public String getNumber() { 
     return this.number; 
    } 


    public String toString() { 
     return "" + getName()+ " number: " + getNumber(); 
    }  
} 

這裏是電話號碼列表類:

import java.util.ArrayList; 

public class Numbers { 
    private ArrayList<Person> memo; 

    public Numbers() { 
     this.memo = new ArrayList<>(); 
    } 

    public void addnew(String name, String number) { 
     Person newperson = new Person (name, number); 
     this.memo.add(newperson);  
    } 
} 
+4

你應該用一個for循環開始。你有兩個班級......你嘗試過的搜索代碼在哪裏? –

+1

[在對象中實現二進制搜索]的可能重複(https://stackoverflow.com/questions/901944/implement-binary-search-in-objects) –

+1

如果我給你一張帶有名單和電話列表的紙張數字,你會如何找到具體名字的號碼?考慮手動解決此問題需要採取的步驟,然後用文字描述這些步驟。 –

回答

0

使用此方法

public String FindNumber(String UserName){ 
    for(Person p : [ArrayList<Person>]) { 
     if (UserName.equals(p.getName())){ 
     return p.getNumber(); 
     } 
    } 
    return "NaN"; 
} 

這個對象[ArrayList<Person>]必須的參考你的列表

你的情況:

你需要修復的建設者

public Numbers() { 
    this.memo = new ArrayList<Person>(); 
} 

你的功能將

public String FindNumber(String UserName){ 
    for(Person p : this.memo) { 
     if (UserName.equals(p.getName())){ 
     return p.getNumber(); 
     } 
    } 
    return "NaN"; 
} 
+2

請勿使用==作爲字符串,請 –

+0

哈哈對不起,我現在正確 –

+2

它被稱爲構造函數,而不是構建器。 – Robert

相關問題