0

问题是:

我们有两个长度为 100 的数组。最初,它们都包含 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:名称,:数字)。

检查键是否已经存在,否则插入键值对。

有一些示例代码显示了如何在链接文档中使用 Hashtable。

于 2012-06-03T19:59:41.277 回答