-1

こんにちは、Java コーディングに問題があります。オブジェクトを指す方法がわかりません。

コードは次のようになります。私は2つのクラスを持っています。ユーザーとユーザー。ユーザーリストをLinked Listとして管理するUsersクラスは、追加や削除などを行うクラスです。あるユーザーから別のユーザーにメッセージを送信するだけでなく、メソッドをコーディングする必要があります。

メソッドは User クラスに存在し、別の送信メソッドは User クラスにあり、User によって呼び出されます - send() リストにアクセスします。Users のメインコンストラクターはプログラム全体を駆動するように設定されているためです。別のコンストラクターを作成する必要があります。しかし、私はここで立ち往生しています。

import java.util.*;

public class User 
{
    private String name;
    private Users users;

    public User()
    {
        this.name = readName();
    }
    public User(Users users)
    {
        this.users = users;
    }
    private String readName()
    {
        System.out.print("  Name: ");
        return In.nextLine();
    }
    public boolean matches(String name)
    {
        return this.name.equals(name);
    }
    public String getName()
    {
        return this.name;
    }

    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 boolean isEnd(char c)
    {
        return c == 'x';
    }
    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");
        }
    }
    private void look()
    {

    }
    private void read()
    {

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

}

セカンドクラス

import java.util.*;

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

    private LinkedList<User> users = new LinkedList<User>();
    private LinkedList<Email> emails = new LinkedList<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 boolean isEnd(char c)
    {
        return c == 'x';
    }
    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 add()
    {
        User user = new User();
        if (!exists(user.getName()))
        {   
            users.add(user);
            System.out.println("    User " + getIndex(user) + ": " +     


                        user.getName());
        }
        else
            System.out.println("already exists");
    }

    private int getIndex(User user)
    {
        int index = users.indexOf(user) + 1;
        return index;
    }

    private void delete()
    {
        User user = user(readName());
        if (user != null)
            users.remove(user);
        else
            System.out.println("  No such name");
    }

    public void send()
    {

    }

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

    private boolean exists(String name)
    {
        return user(name) != null;
    }

    private User user(String name)
    {
        for (User user: users)
            if (user.matches(name))
                return user;
        return null;
    }

    private String readName()
    {
        System.out.print("  Names: ");
        return In.nextLine();
    }
}
4

1 に答える 1