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 Sort\n Execution time:"+ elapsedTime+"}");
}
}
我試圖JSON數組轉換成一個int [],排序INT [],然後隨着時間的輸出爲JSON它採取了排序來執行。我收到的錯誤是一個NullPointerException。有麻煩使用插入排序與JSON
java.lang.NullPointerException
csi403.ReverseList.sort(ReverseList.java:23)
csi403.ReverseList.doService(ReverseList.java:99)
csi403.ReverseList.doPost(ReverseList.java:44)
這是我第一次使用servlet,我沒有一個有效的方法來糾正和編譯錯誤。我正在使用亞馬遜網絡服務(Elastic Beanstalk,Postman和Maven)的組合來創建HTTP端點。所以,這個問題是雙重的。爲什麼我會遇到這個錯誤?而且,是否有更簡單的方法來編譯此代碼並進行更正。我聽說過一種名爲cURL的工具,但我不確定它與我現在所做的有什麼不同。任何幫助表示讚賞!
你首先搭建一個[mcve];例如:您嘗試在本地運行所有這些...確保你的代碼能夠讀取json,並對其進行排序。忘記所有其他增加複雜性的事情,直到您確信在您的**本地**機器上JSON解析,排序完美無缺。 – GhostCat
您的堆棧跟蹤會告訴您異常的位置。請在您的問題中提供 –
謝謝您的建議。你能推薦我使用的任何資源來學習如何在本地機器上設置一切嗎?我會做更多與此相似的作業。而你的建議似乎是對我的問題的完美解決方案。 –