0

簡単なメールシステムのコードを書いています。このシステムは、次の 4 つのクラスで構成されています。

  • リスト項目
  • ユーザー
  • ユーザー (メイン クラス)
  • メールグループ

私の質問は、上位 3 つのクラスについてです。私のコードでは、クラスで始まりUsers、システムに追加、削除できるメニューがポップアップ表示されますLinkedList. また、メニューには、システムから既存のユーザーを選択し、User クラスにある別のメニューをポップアップする使用選択があります。このクラスにはLinkedList、特定のユーザーが所有する別の電子メールがあります。新しいメニューには、メールの一覧表示、メールの閲覧、メールの送信などの選択肢があります。私の問題はここから始まります。メッセージを送信できますが、メッセージを一覧表示できません。look()クラスでメソッドを呼び出すとUserメッセージは表示されませんが、メインクラスで呼び出されるとメッセージが表示されます。これについて何かアドバイスをお願いします。ありがとうございました。

私のコード: ユーザー クラス

public class Users 
{
public static void main(String[] args)
{
    new Users();
}

private LinkedList<User> users = new LinkedList<User>();
private User user;
private Email email;

public Users()
{   menu();}

private void menu()
{   char c = readChoice();
    while (!isEnd(c))
    {   execute(c);
        c = readChoice();}}

private char readChoice()
{   System.out.print("Choice (a/d/g/u/x): ");
    return In.nextChar();}  

private void execute(char c)
{   switch(c)
    {   case 'a': add(); break;
        case 'd': delete(); break;
        case 'g': break;
        case 'u': use(); break;
        default : System.out.println("    Invalid choice");}}

private void use()
{   User user = new User(this);
    if (exists(user.getName()))
        user.use();
    else
        System.out.println("    No such user"); }

public void send()
{   User user = user(readRecipient());
    String header = readHeader();
    String message = readMessage();
    if (user != null)
    {    user.add(new Email(user, header, message));}
        //user.look();this method is just for tes if it is included
                    // in the method above it lists the messages.
    else
        System.out.println("No such adress");}
}

私のユーザークラス

public class User 
{
private String name;
private Users users;
private LinkedList<Email> emails = new LinkedList<Email>();

public User(Users users)
{   this.users = users;
    this.name = readName();}

public void use()
{   char c = readChoice();
    while (!isEnd(c))
    {   execute(c);
        c = readChoice();}}

private char readChoice()
{   System.out.print("  Choice (l/r/s/d/x): ");
    return In.nextChar();}

private void execute(char c)
{   switch(c)
    {   case 'l': look(); break;
        case 'r': read(); break;
        case 's': send(); break;
        default : System.out.println("    Invalid choice");}}

public void look()
{   String s = "    ";
    s += name + " has " + emailSize() + " messages";
    System.out.println(s);}

public void add(Email email)
{   emails.add(email);}

private void send()
{   users.send();}

}

最後のクラス メールアドレス:

package assignment;

public class Email {

private String header;
private String message;
private User user;

public Email(User user, String header, String message)
{   this.user = user;
    this.header = header;
    this.message = message;}

}

4

1 に答える 1

0

メソッドsendは、電子メールを受信者に関連付け、それに応じて動作します。

public void send()
{   User user = user(readRecipient());
    String header = readHeader();
    String message = readMessage();
    if (user != null)
    {    user.add(new Email(user, header, message));
        user.look();}
    else
        System.out.println("No such adress");}
}

あなたが電話するuser.look()と、ユーザーはUser user = user(readRecipient());

したがって、" apples to apples "を比較したい場合は、" l " オプションを使用する際にも受信者を選択する必要があります。

于 2013-04-08T05:00:49.837 に答える