こんにちは、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();
}
}