一个面试问题的问题

时间:2012-06-03 19:57:48

标签: java algorithm

问题是:

我们有两个长度为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);

}

P.S。:如果您有任何其他优化方式,请建议。

2 个答案:

答案 0 :(得分:3)

因此,如果您确实需要使用Array,请记住当前的名称 - 数字对数。

首先说你有n个名字 - 数字对,下次当你得到一个新名字时,只需要

    if (n < 100) {
        arr1[n] = newName;
        arr2[n] = newNumber;
        n++; 
    }
    else {
        // take care of this invalid case
    }

答案 1 :(得分:2)

更简单(更好)的方法是使用java Hashtable:名称,:数字)。

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

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