0

これを効率的にコーディングしているのか、正しくコーディングしているのかさえわかりませんが、名前、住所、電話番号を入力したいと思います。次に、入力配列から一致するものを入力に見つけさせ、その同じインデックス番号を使用して対応する情報を出力したいと考えています。

import java.util.*;

public class NameAddress {

    public static void main(String[] args) {

        Scanner ui = new Scanner(System.in);
        System.out.println("Welcome to the name collecting database");
        String []names = new String[5];
        String []address = new String[5];
        String []phone = new String [5];
        int count =0;

        while (count<=5)
        {
            System.out.println("Please enter the name you would like to input");
            names[count] =ui.next();
            System.out.println("Name has been registered into Slot "+(count+1)+" :"+Arrays.toString(names));
            System.out.println("Please enter the address corresponding with this name");
            ui.nextLine();
            address[count] = ui.nextLine();
            System.out.println(names[count]+" has inputted the address: "+address[count]+"\nPlease input your phone number");
            phone[count]=ui.nextLine();
            System.out.println(names[count]+"'s phone number is: "+phone[count]+"\nWould you like to add a new user? (Yes or No)");

            if (ui.next().equals("No"))
            {
                System.out.println("Please enter a name to see matched information");
                String name = ui.next();
                if(name.equals(names[count]))
                {
                    System.out.println("Name: "+names[count]+"\nAddress: "+address[count]+"\nPhone: "+phone[count]);
                }
                count=6;
            }
            count++;
        } 
    }

}
4

3 に答える 3

0
        System.out.println("Please enter a name to see matched information");
        String name = ui.next();
        for(int i = 0; i <names.length;i++){
        if(name.equals(names[i]))
        {
            System.out.println("Name: "+names[i]+"\nAddress: "+address[i]+"\nPhone: "+phone[i]);
        }
        }
于 2013-02-15T19:39:29.380 に答える
0

if(name.equals(names[count]))nameは、ユーザーが検索している が の現在のインデックスにある場合にのみ機能しますnames。したがって、配列内のすべての項目をチェックして、配列内に存在するかどうかを判断する必要があります。あなたはこれを行うことができます:

int itemIndex = Arrays.asList(names).indexOf(name);
if(itemIndex>=0) // instead of if(name.equals(names[count]))
{
    // rest of the codes; use the itemIndex to retrieve other information
}
else
{
    System.out.println(name + " was not found");
}

namesまたは、他の人が示したように、配列を手動でループします。

于 2013-02-15T19:45:55.990 に答える
0

すでにデータ入力が完了しているようです。

検索によるデータ取得に関しては、効率を気にしない場合は、配列全体を反復処理して、入力されたテキストが配列内の任意の要素と一致するかどうかを確認できます。

int searchIndex = 0;
for (int i = 0; i < names.length; i++) {
    if (searchString.equals(names[i])) {
        searchIndex = i;
    }
}

ここで、searchString は、配列内の要素を検索するためにユーザーが入力した文字列です。上記のコード ブロックは、重複するデータがないことを前提としていますが、必要に応じて、返されたインデックスを簡単に微調整して、データを含むインデックスの配列を含めることができます。次に、他の配列内の残りのデータを見つけるために使用できるインデックス番号 (またはインデックス番号) を取得します。

于 2013-02-15T19:47:20.363 に答える