2013-10-15 3 views
0
org.apache.jasper.JasperException 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 

root cause 

java.lang.NullPointerException 
java.util.Arrays.mergeSort(Arrays.java:1156) 
java.util.Arrays.sort(Arrays.java:1080) 
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 

문자열 배열을 정렬하고 java.lang.NullPointerException을 수신하려고합니다. 이것은 코드의 일부일 뿐이지 만 오류와 관련된 부분입니다. 나는 문자열 배열 myRows를 초기화 할 때 값을 null로 설정한다는 것을 알고있다. 그러나 null을 확인하고 item_value, period_value 및 periodAmt_value 값을 설정 값으로 설정합니다. 배열의 내용을 출력 할 때 설정된 값을 포함합니다. java.util.Arrays.sort()가 작동하지 않는 이유와 왜 오류인지 이해하지 마십시오. 어떤 도움이라도 대단히 감사합니다 !!JSP java.lang.NullPointerException

<%

String item_name; 
String item_value; 

String period_name; 
String period_value; 

String periodAmt_name; 
String periodAmt_value; 

String annualAmt_name; 
int error_count = 0; 
int annualAmt_value = 0; 
int totalExp = 0; 

String[] myRows = new String[3]; 


for (int i=0; i < 3; i++) 
{ 
item_name = "item" + i; 
item_value = request.getParameter(item_name); 

if (item_value == null) 
{ 
     item_value = "Rent"; 
} 

period_name = "period" + i; 
period_value = request.getParameter(period_name); 

if (period_value == null) 
{ 
    period_value = "52"; //default value 
} 

periodAmt_name = "periodAmt" + i; 
periodAmt_value = request.getParameter(periodAmt_name); 

if (periodAmt_value == null) 
{ 
    periodAmt_value = "520"; 
} 


myRows[i] = item_value + "|" + period_value + "|" + periodAmt_value; 

out.println(myRows[i]); 


java.util.Arrays.sort(myRows); 


String text = myRows[i]; 
StringTokenizer st = new StringTokenizer(text, "|"); 
String[] myFields = new String[st.countTokens()]; 

out.println("<tr>"); 

for (int j = 0; j < myFields.length; j++) 
{ 
    myFields[j] = st.nextToken(); 


    if(j==0) 
    { 
    out.println("<td><input type=text name=" + item_name + " value=" + myFields[j] + "></td>\n"); 
    } 
+2

정확한 오류 메시지 (행 번호 ...)를 붙여 넣을 수 있습니까? – Frithjof

+2

루프처럼 매번 sort를 호출하는 것처럼 보이므로 처음에는 2 개의 요소가 null이되므로 NullPointerException이 발생합니다. – Samhain

+0

'java.util.Arrays.sort (myRows); 다음에 오는 행 번호는 무엇입니까? '? –

답변

0

당신의 예외 로그를 ​​본 후 나는 문제가 null 요소를 포함하는 배열을 정렬하려고 때문이다 확실성 높은 수준의 말할 수 있습니다. 주어진 코드의 흐름을 감안할 때, 필자의 배열을 전체적으로 빌드 한 다음 정렬하여 html을 생성하는 이전 권장 사항에 따라 강력하게지지합니다.

+0

빠른 응답 주셔서 감사합니다. 배열 전체를 빌드하면 정확히 무엇을 의미합니까? 나는 아주 새로운 자바입니다. – user2883088

+0

배열의 각 요소를 값으로 완전히 초기화해야합니다. 그런 다음 배열을 정렬하십시오. 그런 다음 정렬 된 배열을 반복하고 HTML을 생성합니다. 현재 값을 초기화하고, 배열을 정렬하고, 같은 for 루프에 모두 html을 생성하려고합니다. 이것이 문제를 일으키는 원인입니다. – Deadron

+0

데드론에게 감사드립니다 ... 귀하의 의견에 감사드립니다 !! – user2883088

관련 문제