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 回答