package arrays;
import java.util.Arrays;
public class Route {
int cityindex;
int stadtwahl;
String[] cities = {"Berlin", "Hamburg", "Kiel", "Muenchen", "Stuttgart", "Dresden", "Heidelberg"};
int stadtwahlA;
int stadtwahlB;
int[][] entfernung;
int A;
int B;
public void Route() {
entfernung = new int[A][B];
this.A = A;
this.B = B;
entfernung[0][1] = entfernung [1][0] = 288;
entfernung[0][2] = entfernung [2][0] = 355;
entfernung[0][3] = entfernung [3][0] = 585;
entfernung[0][4] = entfernung [4][0] = 632;
entfernung[0][5] = entfernung [5][0] = 194;
entfernung[0][6] = entfernung [6][0] = 628;
}
public void einlesen() {
System.out.println("Sie haben folgende Staedte zur Auswahl: "
+ "\n0: " + cities[0] //Berlin
+ "\n1: " + cities[1] //Hamburg
+ "\n2: " + cities[2] //Kiel
+ "\n3: " + cities[3] //Muenchen
+ "\n4: " + cities[4] //Stuttgart
+ "\n5: " + cities[5] //Dresden
+ "\n6: " + cities[6] + "\n"); //Heidelberg
System.out.println("Bitte waehlen Sie eine Stadt: ");
stadtwahlA = Konsole.getInputInt();
System.out.println("Bitte waehlen Sie ein Ziel: ");
stadtwahlB = Konsole.getInputInt();
}
public void ausgabe() {
System.out.println("Die Entfernung zwischen " + cities[stadtwahlA] + " und " + cities[stadtwahlB] + " betraegt : " );
this.A = stadtwahlA;
this.B = stadtwahlB;
System.out.print(entfernung[0][1]);
}
}
我的想法是打印一些城市之间的距离(entfernung)。 所以出于测试原因,我刚刚进入了城市0(柏林)和其他城市之间的距离。最后我想写
System.out.print(entfernung[stadtwahlA][stadtwahlB]);
或者至少对我来说似乎是最好的选择 - 但出于某种原因,我在运行此代码时会得到nullpointerexception:
Sie haben folgende Staedte zur Auswahl:0:柏林1:汉堡2:基尔 3:慕尼黑4:斯图加特5:德累斯顿6:海德堡
Bitte waehlen Sie eine Stadt:1 Bitte waehlen Sie ein Ziel:5 Die Entfernung zwischen Hamburg und Dresden betraegt:Exception in 线程“main”java.lang.NullPointerException at arrays.Route.ausgabe(Route.java:70)at arrays.RouteTest.main(RouteTest.java:8)
因为我是新手而且所有人,我会非常感谢任何帮助解释我我的错在哪里尽可能容易;)提前感谢!
编辑:这是我的测试类:
package arrays;
public class RouteTest {
public static void main(String[] args) {
Route R1 = new Route();
R1.einlesen();
R1.ausgabe();
}
}
答案 0 :(得分:2)
你遇到的问题是因为你在Route的构造函数前面有空洞。所以entfernung永远不会被初始化。它是空的。
更改
public void Route() {
到此
public Route() {
您将遇到的下一个错误是ArrayIndexOutOfBoundsException,因为您的构造函数声明了一个0 x 0大小的数组,然后您尝试引用该数组中不存在的[0] [1]元素。那是因为你还没有初始化A和B变量。我会把它留给你作为一个练习。