按给定索引获取数据

Get Data by Given Index

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

public static void ausgabeIndex(int index, String[] nN, String[] vN, String[] adres) {
    Scanner sc = new Scanner(System.in);
    System.out.println("Please insert the number of the registered employees: ");
    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]);

        }
    }
}

不清楚这里是否存在不止一个问题,因为你没有说明实际问题是什么,只是它不起作用。

还有,你这里的数据有点奇怪。这将更适合作为 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. 每当您尝试访问数组中的元素时,请确保检查边界以避免 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.");
    }
}