当前位置: 首页 > 知识库问答 >
问题:

java初学者:在字符串中打印二维数组元素

谭泉
2023-03-14
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:海德堡

BITE waehlen Sie eine Stadt:1 BITE waehlen Sie ein Ziel:5 Die ENTFERNUG zwischen Hamburg AND Dresden betraegt:线程“main”java中出现异常。数组处的lang.NullPointerException。路线ausgabe(Route.java:70)at数组。常规测试。main(RouteTest.java:8)

因为我是一个新手,所以我非常感谢任何能解释我哪里容易犯错的帮助;)提前感谢!

编辑:这是我的测试类:

    package arrays;

public class RouteTest {

    public static void main(String[] args) {
        Route R1 = new Route();
        R1.einlesen();
        R1.ausgabe();


    }

}

共有1个答案

彭礼骞
2023-03-14

你遇到的问题是因为你在Route中成为一个构造函数的意思前面有空。所以entfernung永远不会被初始化。它是空的。

改变

public void Route() {

对这个

public Route() {

您将遇到的下一个错误是ArrayIndexOutOfBoundsException,因为您的构造函数正在声明一个大小为0×0的数组,然后您试图引用该数组中不存在的[0][1]元素。这是因为您尚未初始化A和B变量。我把它留给你做练习。

 类似资料:
  • 问题内容: 我知道如何对一维字符串数组执行此方法,但是如何打印二维数组?使用1D时,我是这样进行的: 如何打印2D阵列? 问题答案: 您只需对元素进行两次迭代: 重要提示: 也很有用,因为您可以链接操作,例如:因为它返回对self的引用!如果可以的话,使用晕厥糖。 重要事项2: 由于在这种情况下,您计划向其添加许多内容,因此最好估算一下避免在添加过程中多次分配和重新定位数组的能力,因此您可以执行以

  • 问题内容: 我喜欢例如转换字符串: 变成这样的二维数组 我尝试使用该方法,但仍然没有解决方法:( 谢谢.. 问题答案: String data = “1|apple,2|ball,3|cat”; String[] rows = data.split(“,”); 除了使用正则表达式外,其他操作非常简单,因此元字符需要转义。 也可以看看 正则表达式和转义特殊字符 Java Arrays.equals(

  • 我试图打印每个单词的第一个字符放入一个二维数组。我得到一个错误,当我试图打印它的子串。 我得到一个不可编译的源代码错误。

  • 在C++中将二维字符数组复制到一维数组字符串中最简单的方法是什么? 大概是这样的: 问候蒂尔曼

  • 问题内容: 我正在编写一个程序,该程序将以字符串形式输出唯一字符(通过扫描仪输入)。我创建了一个方法来尝试实现此目的,但我一直在获取不重复的字符,而不是字符串中唯一的一个(或多个)字符。我只想要唯一的字母。 这是我的代码: 这是上面代码的示例输出: 预期的输出将是: 问题答案: 根据所需的输出,当以后重复时,必须替换最初已经添加的字符,因此:

  • 问题内容: 所以,我有这个问题。我得到了元组(1,2,3),应该使用字符串格式进行打印。例如。 这应该打印带有括号的元组表示形式,例如 这是一个元组(1,2,3) 但是我得到了。 我到底该怎么做?Kinda在这里输了,所以如果你们能指出我正确的方向:) 问题答案: 以目标元组为唯一项(即零件)来制作单例元组是这里的关键。