【问题标题】:Struggling to populate Multi-Dimensional array努力填充多维数组
【发布时间】:2015-05-09 02:44:13
【问题描述】:

我尝试了我能想到的一切,但老实说,我没有想法。请提供任何可能的提示。

基本上我创建了一个字符串数组并有一个二维数组,我试图用 for 循环中的另一个数组填充它。发生的事情是当程序遇到第二个循环时它就停止了。什么也没发生,我不知道为什么!

我已经尝试了几种不同的循环以及手动填充它,但每次都会发生同样的事情。

我需要什么:

array[][] = {[], [], []}

我得到什么:nada

public void getEwonData(String data)
{
    JsonParser parser = new JsonParser();

    try
    {
        Object obj = parser.parse(data);
        JsonObject jsonObj = (JsonObject)obj;
        JsonArray arr = jsonObj.get("ewons").getAsJsonArray();
        String[][] array = null;
        for(int i = 0; i < arr.size(); i++)
        {

            JsonObject p = (JsonObject) arr.get(i);
            JsonElement varName  = p.get("name");
            JsonElement varStatus = p.get("status");
            JsonElement varDesc = p.get("description");

            String[] varInfo = {varName.toString(), varStatus.toString(), varDesc.toString()};


             //This is where it stops. 
            for(int x = 0; x <= varInfo.length - 1; x++)
            {
                array[i][x] = varInfo[x];
            }
            //I can't get here!
        }

    }

老实说,我没有想法,如果有任何帮助,我都会非常感激。

【问题讨论】:

  • 你能发布一个你传递给方法的数据样本吗?
  • 您的代码无法编译; ewonInfo 是一个未声明的变量。但是这里有一个主要问题:String[][] array = null;。您永远不会将数组分配给 array,因此当您尝试在内部 for 循环中访问它时,您会得到一个 NullPointerException
  • ewonInfo 是什么,你在哪里声明的?
  • 是的,我修复了上面的代码,这只是复制和粘贴之间的混乱。更正了,欧文你太棒了!你对我的阵列非常正确。我认为这可能解决了我的 catch 子句没有抛出错误,但现在它是。
  • 我实际上声明了我的 String[][] 数组,正如 Erwin 所指出的那样。现在一切都解决了 :) 非常感谢!

标签: java arrays for-loop multidimensional-array


【解决方案1】:

我假设您打算使用 varInfo 而不是 ewonInfo

代码将是:

try {
    Object obj = parser.parse(data);
    JsonObject jsonObj = (JsonObject) obj;
    JsonArray arr = jsonObj.get("ewons").getAsJsonArray();
    String[][] array = new String[arr.size()][];
    for (int i = 0; i < arr.size(); i++) {

    JsonObject p = (JsonObject) arr.get(i);
    JsonElement varName = p.get("name");
    JsonElement varStatus = p.get("status");
    JsonElement varDesc = p.get("description");

    String[] varInfo = {varName.toString(), varStatus.toString(), varDesc.toString()};
    array[i] = varInfo;
    }

}

【讨论】:

  • 是的,当我改变我忘记做的事情时,变量被正确命名,谢谢。我也直接分配了它,同样的事情发生了一切都停止了。我在数组后面放了一个 println 调试语句,以查看发生了什么以及它没有走那么远。
  • 你的问题只是 String[][] array=null;您只需要在尝试调用 array[i][x] 之前对其进行初始化
【解决方案2】:

问题已解决。正如一些人指出的那样,我从未初始化我的数组。这样做之后,现在一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    相关资源
    最近更新 更多