1

これが正しいかどうかわからないので、皆さんのコメントが必要です。従業員名の配列があります。コンソールに表示され、ユーザーが別の名前を挿入するかどうかを尋ねられます。名前は配列の末尾 (インデックス 4) に追加する必要があり、配列が再度表示されますが、新しい名前が既に追加されています。それ、どうやったら出来るの?ところで、これが私のコードです。そして、私は立ち往生しています。そこに null を書き込むことが有効かどうかさえわかりません。

public static void list() {
    String[] employees = new String[5];
    employees[0] = "egay";
    employees[1] = "ciara";
    employees[2] = "alura";
    employees[3] = "flora";
    employees[4] = null;

    for(int i = 0; i < employees.length; i++) {
        System.out.println(employees[i]);
    }
}
public static void toDo() {
    Scanner input = new Scanner(System.in);
    System.out.println("What do you want to do?");
    System.out.println("1 Insert");
    int choice = input.nextInt();

    if(choice == 1) {
        System.out.print("Enter name: ");
        String name = input.nextLine();
4

5 に答える 5

5

基本的に、できません。

配列は、構築された時点でサイズが固定されています。必要なサイズの新しい配列作成し、既存のすべての要素をその配列にコピーしてから、新しい要素をコピーするか、List<String>代わりにArrayList<String>. 後者のアプローチを強くお勧めします。

コレクションのチュートリアルを読んで、Java で利用可能なさまざまなコレクションについて詳しく学ぶことをお勧めします。

また、現在、メソッドでローカル変数を取得していることにも注意してください。おそらく、代わりにフィールドlistが必要になるでしょう。理想的には、インスタンス フィールド (たとえば、呼び出されたクラスまたはそれに類似したもの) ですが、実験だけの場合は、現時点でフィールドを使用できます。静的フィールドはグローバルな状態を表し、一般に可変値には悪い考えですが、現時点ではすべてのメソッドも静的であるように見えます...Companystatic

于 2013-01-20T14:06:32.157 に答える
1

配列のサイズは固定です。一度宣言すると、サイズを変更することはできません。

コレクションjava.util.Listまたはを使用しますjava.util.SetArrayList動的に拡張可能で、配列によってサポートされる例。

于 2013-01-20T14:08:56.563 に答える
1

本当に配列を使用する必要がある場合は、中間コピーを使用して配列のサイズを増やす必要があります。

String[] array = new String[employees.length + 1];
System.arraycopy(employees, 0, array, 0, employees.length);
array[employees.length] = newName;
employees = array;

ただし、最善の方法は、List実装を使用することです。

于 2013-01-20T14:11:19.817 に答える
0

ここでは、作成時に固定される静的配列を使用しています。動的配列の機能を提供する java.util.Arraylist を使用する必要があると思います。

于 2013-01-20T16:38:24.333 に答える
0

ユーザーが 5 つ以上の従業員名を入力できるかどうかによって異なります。可能であれば、ArrayList を使用することをお勧めします。また、従業員変数は静的メソッドで使用されるため、クラスの静的プロパティである必要があります。

private static String[] employees = new String[5];

static {
    employees[0] = "egay";
    employees[1] = "ciara";
    employees[2] = "alura";
    employees[3] = "flora";
    employees[4] = null;
}

public static void list() {
    for(int i = 0; i < employees.length; i++) {
        System.out.println(employees[i]);
    }
}

public static void addEmployeeName(String name, int index) {
    employees[index] = name;
}
于 2013-01-20T14:15:40.843 に答える