2D数组:在2D数组中附加值

时间:2019-03-18 07:15:39

标签: java multidimensional-array

我有一个JSON对象

 "methodSet":[{"num":1,"methodName":1,"methodStatus":1},
 {"num":2,"methodName":2,"methodStatus":1}]

我需要将methodName和methodStatus放入MethodClass数组中。

根据下面的代码,我总是获得MethodClass [2] [1]的最后一个值。我想要的预期结果是[1] [1],[2] [1]。我可以知道如何为methodSet累积值吗?我可以使用什么方法来附加2D数组?

JSONArray arr=(JSONArray)obj.get("methodSet");
int lengtharr = arr.length();
    if (arr != null) {
        JSONObject objMethod1;
        String MethodName, MethodStatus;
        for (Object o1 : arr) {
            objMethod1 = (JSONObject) o1;
            MethodName = String.valueOf(objMethod1.get("methodName"));
            MethodStatus = String.valueOf(objMethod1.get("methodStatus"));

            int resultMethodName = Integer.parseInt(MethodName);    
            int resultMethodStatus = Integer.parseInt(MethodStatus);

            for (int j = 0; j < lengtharr; j++) {
                        methodSetFinal[i][j] = new MethodClass();
                        methodSetFinal[i][j].setmethodName(resultMethodName);
                        methodSetFinal[i][j].setmethodStatus(resultMethodStatus);

                        methodSet [i][j] = methodSetFinal [i][j];
            }
        }
}

MethodClass代码:

public class MethodClass {
private int methodName;
private int methodStatus;

public MethodClass() {
methodName = 0;
methodStatus = 0;
}

public int getmethodName() {
return methodName;
}
public int getmethodStatus() {
return methodStatus;
}

public void setmethodName(int i) {
this.methodName = i;
}

public void setmethodStatus(int status) {
this.methodStatus = status;
}

}

1 个答案:

答案 0 :(得分:1)

您不需要2D数组,一个简单的数组就足够了,一个for循环就足够了

JSONArray arr=(JSONArray)obj.get("methodSet");
if (arr != null) {
    int lengtharr = arr.length();
    MethodClass[] methodSetFinal = new MethodClass[lengtharr];
    JSONObject objMethod1;
    String MethodName, MethodStatus;
    int index = 0;
    for (Object o1 : arr) {
        objMethod1 = (JSONObject) o1;
        MethodName = String.valueOf(objMethod1.get("methodName"));
        MethodStatus = String.valueOf(objMethod1.get("methodStatus"));

        int resultMethodName = Integer.parseInt(MethodName);    
        int resultMethodStatus = Integer.parseInt(MethodStatus);
        MethodClass methodClass = new MethodClass(); 
        //A constructor in your model class that takes two parameters would have been nice
        methodClass.setmethodName(resultMethodName);
        methodClass.setmethodStatus(resultMethodStatus);
        methodSetFinal[index] = methodClass;
        index++;
    }
}

我没有检查您的json相关代码,只是假设它是正确的。