在编写用于员工管理的程序时,我需要一种将相应数据吐出到特定索引(由用户指定的数字)的方法。已经尝试了许多方法来实现这一目标,例如下面的方法,但没有成功:
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]);
}
}
}
如果您有任何想法,即使不赞成也很高兴,因此其他人会注意到它。 还是谢谢你
答案 0 :(得分:2)
目前尚不清楚是否存在多个问题,因为您没有说出实际的问题是什么,除了那没有用。
此外,这里的数据有些奇怪。这将更适合作为class
来封装所有数据而不是三个字符串数组。
但是,我怀疑这是您的问题的一部分:nN[i].equals(index)
nN
是String
的数组,而index
是int
。这些从不相等。它们不是相同的数据类型。
要正确比较字符串和整数,您需要将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)
您需要在代码中解决以下问题:
ArrayIndexOutOfBoundsException
,例如您访问了vN[index]
,而没有检查index
是否小于vN.length
。 adres[index]
也有同样的问题。nN[i]
是String
,而i
是int
,因此除非您将一个或另一个更改为另一个,否则无法比较它们。但是,我确定您不是要比较nN[i]
和index
。查看您的程序,看来您想将nN[i]
与nN[index]
进行比较。 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.");
}
}