-2

わかりましたので、ユーザーに連絡先の名前と、連絡先に関連付けられているさまざまな量の番号と番号の種類 (仕事、voip など) を尋ねる Java プログラムを作成する必要があるという課題があります。toString() メソッドは、連絡先の名前と関連する番号および番号の種類を出力すると想定されています。

配列をメイン メソッドから phoneBookEntry コンストラクターに正しく渡していますか? (コンパイルエラーなどがあることは知っていますが、配列を正しく渡していることを確認したいです。また、私のアプローチは正しいですか?

ここでは、それに応じて UML テーブルに従うとします。

電話帳エントリ


  • 名前 : 文字列
  • phoneNumbers : 文字列[]
  • phoneTypes : 文字列[]


  • 電話帳エントリ()

  • PhoneBookEntry(nam : 文字列) :
  • PhoneBookEntry(nam : String, numbers : String[], types : String[]) :
  • getName() : 文字列
  • setName(nam : String) : 無効
  • getPhoneNumber(type : String) : 文字列
  • setNumbers(numbers : String[], types : String[]) : void
  • 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);

  }

}
4

2 に答える 2

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

それは何も返しません。println()戻りますvoid。繰り返しますが、ループの最初の繰り返しで戻ります。a を構築しString、ループの後に返す必要があります。コンパイルエラーを回避するにはpublic String toString()、 a を返す必要があります。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();
}
于 2013-07-09T17:49:30.353 に答える
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 の長さが等しいかどうかも確認する必要があります。

  • 空のコンストラクターは、空の phoneBook である必要があります。デフォルトでは、プライベート フィールドは null です。そのため、toString() メソッドが爆発する可能性があります。

  • コンストラクターと一緒に電話番号/タイプの個別の get/set メソッドを使用するのは適切ではありません。代わりに、電話番号を追加/削除/更新できるリストを保持します。それが次の課題だと思います。幸運を !

于 2013-07-09T18:00:32.013 に答える