使用JSON使用插入排序遇到麻烦


public class ReverseList extends HttpServlet {
   public static void sort(int arr[]) {
      int N = arr.length;
      int i, j, temp;
      for (i = 1; i< N; i++) {
          j = i;
          temp = arr[i];
          while (j > 0 && temp < arr[j-1]) {
              arr[j] = arr[j-1];
              j = j-1;
          }
          arr[j] = temp;
      }
  }
  private void doService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream()));
      String jsonStr = "";
      if(br != null){
          jsonStr = br.readLine();
      }
      StringReader strReader = new StringReader(jsonStr);
      JsonReader reader = Json.createReader(strReader);
      JsonObject obj = reader.readObject();
      JsonArray inArray = obj.getJsonArray("inList");
      int data [];
      for (int i = 0; i > inArray.size(); i++) {
         data = new int[inArray.getInt(i)];
      }
      long startTime = System.currentTimeMillis();
      this.sort(data);
      long stopTime = System.currentTimeMillis();
      long elapsedTime = stopTime - startTime;
      JsonArrayBuilder outArrayBuilder = Json.createArrayBuilder();
      for(int i = 0; i<data.length; i++) {
         outArrayBuilder.add(data[i]);
      }
      response.setContentType("application/json");
      PrintWriter out = response.getWriter();
      out.println("{ "outList" : " + outArrayBuilder.build().toString()+"n");
      out.println("algorithim: Insertion Sortn Execution time:"+ elapsedTime+"}");
  }
}

我试图将JSON数组转换为INT [],对INT []进行排序,然后将其作为JSON输出,并以所花费的时间执行。我收到的错误是NullPoInterException。

 java.lang.NullPointerException   
 csi403.ReverseList.sort(ReverseList.java:23)   
 csi403.ReverseList.doService(ReverseList.java:99)   
 csi403.ReverseList.doPost(ReverseList.java:44) 

这是我第一次使用servlet,我没有有效的方法来进行更正和编译错误。我正在使用Amazon Web服务 - 弹性豆stal,Postman和Maven的组合来创建HTTP端点。因此,问题是双重的。为什么我遇到这个错误?而且,是否有一种更简单的方法来编译此代码并进行更正。我听说过一种名为Curl的工具,但不确定它与我现在所做的事情会有什么不同。任何帮助都将不胜感激!

在排序之前创建和填充数组的方式可能接近:

int[] data = new int[inArray.size()];
for( int i = 0; i < inArray.size(); i++) {
   data[i] = inArray.getInt( i );
}

要对数组进行排序,您可以使用java.util.arrays.sort。

Arrays.sort( data, Collections.reverseOrder());

对于NPE:条件i > inArray.size()始终是错误的,因此数组保持为空,在sort() arr.length;中抛出NPE。

最新更新