二维数组-java.lang.NullPointerException

时间:2019-01-23 02:51:01

标签: java multidimensional-array

我当前正在编写RESTFUL Web服务程序。 我希望接收一个或两个输入的输入(取决于我的returnValue结果)。 我很难将值分配给2维数组。

我已经尝试了上面遇到的上述代码:java.lang.NullPointerException

关于如何将MethodNameMethodStatus分配到二维数组的任何想法?

MethodSet的预期输出应为([1][1]),([2][1])

每次显示新的二维数组时,应调用AdaptiveAuthService.adaptiveAuth

WebService输入:

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

AdaptiveRESTFUL:

@POST
@Path("/post")
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.APPLICATION_JSON)
public int adaptiveAuth(String objDataLog) throws SQLException{ 

JSONObject obj = new JSONObject(objDataLog);

JSONArray arr=(JSONArray)obj.get("methodSet"); 

//to get how many method been send to TE
    if (arr != null) {
        JSONObject objMethod;
        String Num;
        for (Object o : arr) {
            objMethod = (JSONObject) o;
            Num = String.valueOf(objMethod.get("num"));
            resultNum = Integer.parseInt(Num);
            logWriter("resultNum:     "+resultNum);
        }
     }

//declaration of 2 dimension array
MethodClass[][] methodSet = new MethodClass[resultNum][resultNum];

//to get value for MethodName, MethodStatus
 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);
            logWriter("MethodName:    "+resultMethodName);
            logWriter("MethodStatus:  "+resultMethodStatus);

            for (int i = 1; i < methodSet.length; i++){
                    for (int j = 1; j < methodSet[i].length; j++) {
                        methodSet[i][j] = new MethodClass();
                        methodSet[i][j].setmethodName(resultMethodName);
                        methodSet[i][j].setmethodStatus(resultMethodStatus);
                    }  
            //calling function to do calculation
                    returnValue = AdaptiveAuthService.adaptiveAuth(methodSet);//returning null pointer exception
            }
        }
    }   

AdaptiveAuthService代码:

public static int adaptiveAuth(MethodClass[][] methodSet)throws SQLException {

    int aAC = methodSet[0].length;
    int authMethod = methodSet[0][aAC - 1].getmethodName(); //returning nullpointer exception

如果您有解决问题的想法或方法,请提出建议并告诉我。

1 个答案:

答案 0 :(得分:1)

根据您的代码

for (int i = 1; i < methodSet.length; i++){
    for (int j = 1; j < methodSet[i].length; j++) {
        methodSet[i][j] = new MethodClass();

您从1初始化ij,这意味着methodSet[0]将不会初始化(null),然后尝试从{{ 1}}的值,那么您将获得NullPointerException