1

私はこれについて頭を悩ませることはできません。私はユーザークラスを持っています:

public class user {

private String name;
private int age;

public user()
{
}

public String getName()
{
    return name;
}



public int getAge()
{
    return age;
}

public void setName(String kname)
{
    name = kname;
}


public void setAge(int kage)
{
    alter = kage;
}

}

userUIクラス内でユーザーを作成して一覧表示しています

public class PersonalUI {

public static void main (String args[]) {
    int menu = 0;
    int i = 0;
    while (menu != 3)
    {   
    System.out.println("Please choose: \n (1) Create User \n (2) List User                \n              (3) Quit");
    menu = Console.readInt();
    if (menu = 1)
    {   
    User user[i] = new User();
    System.out.println("Please enter a name");
    String kname = Console.readString();
    user[i].setName(kname);
    }
}

私の問題:User user [i] = new User();のエラーが発生したときに、複数のオブジェクトを作成するにはどうすればよいですか。私はそれを間違っていると思います

4

5 に答える 5

9

配列はあなたの場合に行く方法ではありません。使用リスト

List<User> users = new ArrayList<User>;

if (menu == 1)
{   
    User newUser = new User();
    users.add(newUser);
    newUser.setName(kname);
}

事前に入力されるユーザーの数がわからないため、動的データ構造を使用します。

問題は、同じ方法で2つのことを実行しようとしていることです。配列を作成し、その特定の要素に値を割り当てます。

配列を操作する方法は次のとおりです。

int length = 5; // predetermined by you constant
User []users = new User[length];
//....
users[i] = new User();

あらかじめ決められた定数のため、リストを使用することをお勧めします。

于 2013-02-17T13:02:51.993 に答える
3

この間違いをチェックすることができます。

User user[i] = new User();

user[i] = new User();   // add this in your code

System.out.println("Please enter a name");
String kname = Console.readString();
user[i].setName(kname);

多くの人は、User user [i] = new User()というステートメントがUserのオブジェクトを作成すると考えていますが、参照変数を作成します。参照変数をオブジェクトに変換するには、次のようにする必要があります。

user [i] = new User();

これについては、配列内の参照変数とオブジェクトの混乱(配列オブジェクトの配列)を参照してください。

于 2013-02-17T13:33:45.753 に答える
1


User user[] = new User[size]; //ここUserでサイズのオブジェクトの配列を作成する必要がありますsize

そして、それぞれについてuser
user[i] = new User(); //そしてここであなたは各ユーザーオブジェクトを初期化しています

于 2013-02-17T13:04:34.770 に答える
1

まず、コマンドラインからユーザー配列のサイズを読み取って、ループ外の配列のサイズを定義する必要があります。次に、ループ内で配列に適切な要素を入力します。

     System.out.println("please enter size of the user");
    int size=console.readInt();
    User[] user = new User[size]
    while (menu != 3)
    {   
    System.out.println("Please choose: \n (1) Create User \n (2) List User                \n              (3) Quit");
    menu = Console.readInt();
    if (menu == 1)//changed, you were using assigning here (menu=1)
    {   
    user[i] = new User();

ただし、動的配列が必要な場合は、配列の作成時にサイズを指定する必要のないArrayListなどのList実装クラスを使用してください。

   List<User> usersList = new ArrayList<User>();
   //then inside the loop populate the list with its `List#add(elem)` method
于 2013-02-17T13:01:12.077 に答える
1

メニュー値をチェックするための比較が間違っています。

menu = 1代わりにすべきではありませんmenu == 1

ユーザーをどのように保存するかはわかりませんがArrayList、ユーザーオブジェクトを保存するものを作成し、新しいオブジェクトを作成するたび Userにリストに追加することをお勧めします。

そして、ユーザーを一覧表示しながら、作成された配列リストを繰り返し処理します。

私はこれがあなたが必要としているものだと思います:

public static void main (String args[]) {
    int menu = 0;
    int i = 0;
    List<User> list = new ArrayList<User>();
    while (menu != 3)
    {   
    System.out.println("Please choose: \n (1) Create User \n (2) List User                \n              (3) Quit");
    menu = Console.readInt();
    if (menu == 1)
    {   
    User user = new User();
    System.out.println("Please enter a name");
    String kname = Console.readString();
    user.setName(kname);
    // add this user to the list
    list.add(user);
    }
}
于 2013-02-17T13:10:59.540 に答える