0

質問は:

長さ 100 の 2 つの配列があります。最初は、どちらも n 個の要素 (n<100) を含みます。

Array1名前が含まれています。

Array2番号が含まれています。

ユーザーは名前を入力するよう求められます。プログラムは、入力された名前が に存在するかどうかをチェックしArray1ます。はいの場合、 から対応する番号を出力しArray2ます。

いいえの場合、名前は の最後に保存されArray1、ユーザーは の最後に保存される番号を入力するよう求められますArray2

「名前が見つからない場合」の部分で立ち往生しています。配列の最後に新しい値を入力するにはどうすればよいですか?

これまでにこのコードを作成しました:

public void askUser(String[] arr1, int[] arr2) {
    System.out.println("Enter the name:");
    String namedInput = new Scanner(System.in).nextLine();
    List<String> namesList = Arrays.asList(arr1);

    if(namesList.contains(namedInput)){
        System.out.println("Yes, the name is present. And the subsequent number is: " + arr2[namesList.indexOf(namedInput)]);
    }else{
        System.out.println("Nope, the name is not present");
        System.out.println("The name "+namedInput+" will be added in the list, please enter the corresponding number: ");
        int numInput = new Scanner(System.in).nextInt();
        // How to save the name and number in the first available indice.
    }
    askUser(arr1, arr2);

}

PS: 他に最適化された方法があれば提案してください。

4

2 に答える 2

3

したがって、これに本当に Array を使用する必要がある場合は、名前と番号のペアの現在の数を覚えておいてください。

最初は n 個の名前と番号のペアがあるとします。次に新しいペアを取得したときに、次のようにします。

    if (n < 100) {
        arr1[n] = newName;
        arr2[n] = newNumber;
        n++; 
    }
    else {
        // take care of this invalid case
    }
于 2012-06-03T20:37:06.717 に答える
2

より簡単な (そしてより良い) 方法は、Java Hashtable (キー: 名前、: 番号) を使用することです。

キーが既に存在するかどうかを確認するか、存在しない場合はキーと値のペアを挿入します。

リンクされたドキュメントには、ハッシュテーブルの使用方法を示すサンプル コードがいくつかあります。

于 2012-06-03T19:59:41.277 に答える