按给定索引获取数据

时间:2020-04-20 13:57:56

标签: java indexing methods indexof

在编写用于员工管理的程序时,我需要一种将相应数据吐出到特定索引(由用户指定的数字)的方法。已经尝试了许多方法来实现这一目标,例如下面的方法,但没有成功:

public static void ausgabeIndex(int index, String[] nN, String[] vN, String[] adres) {
    Scanner sc = new Scanner(System.in);
    System.out.println("Geben Sie bitte die Nummer des/der regestrierten Mitarbeiters/Mitarbeiterin ein: ");
    index = sc.nextInt();
    for (int i = 0; i < nN.length; i++) {
        if (nN[i].equals(index)) {
            System.out.println(nN[index]);
            System.out.println(vN[index]);
            System.out.println(adres[index]);

        }
    }
}

如果您有任何想法,即使不赞成也很高兴,因此其他人会注意到它。 还是谢谢你

2 个答案:

答案 0 :(得分:2)

目前尚不清楚是否存在多个问题,因为您没有说出实际的问题是什么,除了那没有用。

此外,这里的数据有些奇怪。这将更适合作为class来封装所有数据而不是三个字符串数组。

但是,我怀疑这是您的问题的一部分:nN[i].equals(index)

nNString的数组,而indexint。这些从不相等。它们不是相同的数据类型。

要正确比较字符串和整数,您需要将String转换为int或将int转换为String。将int转换为字符串是比较安全的选择,因此您可以这样做:

nN[i].equals(String.valueOf(index))

相反,要将String转换为int,可以使用Integer.parseInt(String)

Integer.parseInt(nN[i]) == index

另外一个注意事项: public static void ausgabeIndex(int index

您正在传递index,但立即用您的Scanner.nextInt覆盖它。您不需要它作为方法参数。

答案 1 :(得分:0)

您需要在代码中解决以下问题:

  1. 每当您尝试从数组访问元素时,请确保检查边界以避免ArrayIndexOutOfBoundsException,例如您访问了vN[index],而没有检查index是否小于vN.lengthadres[index]也有同样的问题。
  2. nN[i]String,而iint,因此除非您将一个或另一个更改为另一个,否则无法比较它们。但是,我确定您不是要比较nN[i]index。查看您的程序,看来您想将nN[i]nN[index]进行比较。
  3. 由于您已经将index作为参数传递给方法,因此以下几行没有意义,除非您想覆盖index的值。如果您不想覆盖参数index的值,请删除这些行。
Scanner sc = new Scanner(System.in);
System.out.println("Geben Sie bitte die Nummer des/der regestrierten Mitarbeiters/Mitarbeiterin ein: ");
index = sc.nextInt();

或者,如果要将这些行保留在方法中,请删除参数index。如前所述,只有当您想覆盖参数index的值时,将这两个参数都保留才有意义。

以下是包含这些注释的代码:

 public static void ausgabeIndex(int index, String[] nN, String[] vN, String[] adres) {
    if(index < nN.length) {
        for (int i = 0; i < nN.length; i++) {
            if (nN[i].equals(nN[index])) {
                System.out.println(nN[index]);
                if (index < vN.length) {
                    System.out.println(vN[index]);
                }
                if (index < adres.length) {
                    System.out.println(adres[index]);
                }
            }
        }
    } else {
        System.out.printnl("The index, " + index + " is out of the bounds.");
    }
}