2013-07-09 70 views
-2

好的,所以我有一个任务,我们必须创建一个Java程序,要求用户的联系人的名称和可变数量和数字类型(work,voip ..)与联系人相关联。 toString()方法假设打印联系人姓名和相关联的号码和号码类型。麻烦传递一个数组到一个数组

我是否正确地将我的数组从我的main方法正确传递到phoneBookEntry构造函数? (我知道有编译错误,等等,但我要确保我正确地传递数组还有,就是我的做法正确

假设遵循UML表中相应的位置:?

电话簿条目


  • 名:字符串
  • PHONENUMBERS:字符串[]
  • phoneTypes:字符串[]


  • PhoneBookEntry()

  • PhoneBookEntry(NAM:字符串):
  • PhoneBookEntry(NAM:字符串,数字:字符串[],类型:字符串[]):
  • 的getName():串
  • 的setName(NAM:字符串):无效
  • getPhoneNumber(类型:字符串):字符串
  • setNumbers(数字:串[],类型:字符串[]):无效
  • 的toString():字符串

谢谢!

这是我到目前为止有:

package phonebookentry; 


import java.awt.List; 
import java.util.*; 

public class PhoneBookEntry 
{ 
    private String name; 
    private String[] phoneNumbers,phoneTypes; 

    /** 
    * @param args 
    */ 
    public PhoneBookEntry() 
    { 


    } 


    public PhoneBookEntry(String nam, String[]numbers, String[]types) 
    { 
    phoneNumbers = numbers; 
    name = nam; 
    phoneTypes = types; 
    toString(); 
    } 

    public String getName() 
    { 
    return name; 
    } 
    public void setName(String nam) 
    { 

    } 
    public String[] getPhoneNumber(String type) 
    { 
    return phoneTypes; 
    } 
    public void setNumbers(String[] numbers, String[] types) 
    { 
    this.phoneNumbers = numbers; 
    this.phoneTypes = types; 
    } 
    public String toString() 
    { 
    for (int index = 0; index < phoneNumbers.length; index ++) 
     return System.out.println(nam, this.phoneNumbers, this.phoneTypes) ; 

    } 

    public static void main(String[] args) 
    { 
    String phoneN = "0"; 

    ArrayList<String> Ptypes = new ArrayList<String>(); 


    ArrayList<String> Pnumbers = new ArrayList<String>(); 

    while (!phoneN.equals("-1")) 
    { 


     String phoneT; 
     Scanner input = new Scanner(System.in); 
     // Create an ArrayList to hold some names. 

     System.out.println("Phone number of Contact: (Input -1, to end)"); 
     phoneN = input.nextLine(); 
     if (phoneN.equals("-1")) 
     break; 
     Pnumbers.add(phoneN); 
     System.out.print("Type of phone number(mobile,home,VOIP,work,etc..):"); 
     phoneT = input.nextLine(); 
     Ptypes.add(phoneT); 
    } 

    String nam = "fas"; 
    String[] types = Ptypes.toArray(new String[Ptypes.size()]); 
    String[] numbers = Pnumbers.toArray(new String[Pnumbers.size()]); 
    PhoneBookEntry passPhone = new PhoneBookEntry(nam,numbers,types); 

    passPhone.setNumbers(numbers, 
     types); 

    } 

} 
+0

是我的主要方法是否正确?我是否正确地将Arraylist传递给PhoneBookEntry()构造函数? – user2558149

+0

尝试张贴到http://codereview.stackexchange.com/而不是 – superEb

+0

这并不意味着什么,但我没有看到任何错误。 试着编译它:) –

回答

0

的toString()方法应串联了所有的电话号码(我相信)

@Override 
    public String toString() { 
     StringBuilder phoneBook = new StringBuilder(); 
     //Generate comma separated entries of phone book 
     for (int i = 0; i < phoneNumbers.length && i < phoneTypes.length; i++) { 
      if (i > 0) { 
       phoneBook.append(','); 
      } 
      phoneBook = phoneBook.append(phoneNumbers[i]) 
           .append(':') 
           .append(phoneTypes[i]) 

     } 

     return phoneBook.toString(); 
    } 

其他意见

  • 是没有意义的调用toString()方法在构造函数中。

  • 您还应该检查构造函数中phoneTypes和phoneNumbers的lentgh是否相等。

  • 一个空的构造函数应该是一个空的电话本。默认情况下,私有字段为空。所以toString()方法可能会爆炸。

  • 电话号码/类型以及构造函数的单独get/set方法是一个不错的选择。相反,保持一个列表可以添加/删除/更新电话号码。我想这是下一个任务。祝你好运 !

+0

谢谢!这对控制台输出很有帮助! – user2558149

1
for (int index = 0; index < phoneNumbers.length; index ++) 
    return System.out.println(index) ; 

不返回任何内容。 println()返回void。同样,你在循环的第一次迭代中返回。你应该构造一个String并在循环之后返回它。您的public String toString()应返回String以避免编译错误。 事情是这样的:

public String toString() 
{ 
    StringBuilder str = new StringBuilder(); 
    for (int index = 0; index < phoneNumbers.length; index ++) 
    str.append(...) ; // append whatever you want to display 
    return str.toString(); 
} 
+3

不应该导致编译器错误? –

+0

它应该,我猜为什么它没有或OP! – NINCOMPOOP

+0

我的观点是,你的“答案”应该是对代码不编译的效果的一种评论,而不是说“这不返回任何东西”。由于它没有编译,所以谈论'return'语句的语义不太有用。 –