我的目的是用对象中不同方法的数字和字符串填充不同的数组。
但似乎我有问题。
以下是代码:
package arrays;
import java.util.Scanner;
public class Notendurchschnitt {
public static void main(String[] args) {
NotenManager noten = new NotenManager();
noten.eingabe();
noten.ausgabeDesArrays();
}
}
class NotenManager {
Scanner scanner = new Scanner(System.in);
double[] notenArray;
String[] vornamen;
String[] nachnamen;
void eingabe() {
System.out.print("Wieviele Personen haben\nan der Kausur teilgenommen? ");
double[] notenArray=new double[scanner.nextInt()];
String[] vornamen=new String[notenArray.length];
String[] nachnamen=new String[notenArray.length];
scanner.nextLine();
for (int i=0;i<notenArray.length;i++) {
System.out.printf("%d.Teilnehmer\nVorname: ",i+1);
vornamen[i]=scanner.nextLine();
System.out.print("Nachname: ");
nachnamen[i]=scanner.nextLine();
System.out.print("Note: ");
scanner.nextLine();
}
}
void ausgabeDesArrays() {
double ergebnis=0;
System.out.println("Zahl der Eintraege:."+notenArray[0]+".");
}
}
编译器给了我一个NullPointerException-Error
,因为方法notenanArray
中的数组ausgabe()
没有填充为方法{中的数组notenArray
创建的值{1}}。
为什么数组中填充了空值,即使它是一个实例变量?
答案 0 :(得分:1)
您声明notenArray
,vornamen
,nachnamen
两次(一个作为类属性,另一个在方法eingabe
中)。通过执行此操作,您将输入值本地数组,因此当您尝试打印方法ausgabeDesArrays()
中的第一个元素时,它会抛出一个异常,因为“全局”{{1没有初始化。
要纠正问题,请更改这些行:
notenArray
与
double[] notenArray = new double[scanner.nextInt()];
String[] vornamen = new String[notenArray.length];
String[] nachnamen = new String[notenArray.length];
答案 1 :(得分:1)
您使用NotenManager
方法局部变量声明来隐藏eingabe
类属性:
double[] notenArray = new double[scanner.nextInt()];
String[] vornamen = new String[notenArray.length];
String[] nachnamen = new String[notenArray.length];
你不需要重新演绎它们只是初学者:
notenArray = new double[scanner.nextInt()];
vornamen = new String[notenArray.length];
nachnamen = new String[notenArray.length];
方法局部变量对您的类属性没有影响,因此您的类属性始终为null。