2013-08-30 115 views
2

我想運行一個程序。我在java上真的很新鮮。當我運行我的程序我越來越下面的例外..java.lang.NumberFormatException:對於輸入字符串:「firstno」

type Exception report 
message For input string: "firstno" 

description The server encountered an internal error that prevented it from fulfilling his request. 
exception 

java.lang.NumberFormatException: For input string: "firstno" 
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
java.lang.Integer.parseInt(Integer.java:492) 
java.lang.Integer.parseInt(Integer.java:527) 
MathEx.doPost(MathEx.java:34) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)  

這是我的代碼供您參考。

import java.sql.*; 
import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 

public class MathEx extends HttpServlet 
{ 
public void doGet(HttpServletRequest p, HttpServletResponse q) throws ServletException, IOException 
    { 
    q.setContentType("Text/HTML"); 
    PrintWriter out = q.getWriter(); 

    out.println("<form method=post>"); 
    out.println("Enter first number"); 
    out.println("<input type=text name=first>"); 
    out.println("<br><br>"); 
    out.println("Enter second no."); 
    out.println("<input type=text name=second>"); 
    out.println("<br><br>"); 
    out.println("<input type=submit name=send value=ADDITION>"); 
    out.println("<input type=submit name=send value=SUBSTRACTION>"); 

    out.println("<input type=submit name=send value=END>"); 
    out.println("</form>"); 
    } 

public void doPost(HttpServletRequest s, HttpServletResponse t) throws ServletException, IOException 
    { 
     t.setContentType("TEXT/HTML"); 
     PrintWriter out=t.getWriter(); 
     String firstno = s.getParameter("first"); 
     String secondno = s.getParameter("Second"); 
     String choice = s.getParameter("send"); 
     int fno=Integer.parseInt("firstno"); 
     int sno=Integer.parseInt("secondno"); 
     int result; 
     out.println("First no ="+fno); 
     out.println("<br><br>"); 
     out.println("Second no ="+sno); 
     out.println("<br><br>"); 

if (choice.equals("ADDITION")) 
{ 
    result=fno+sno; 
    out.println("The result of addition= "+result); 
} 


if (choice.equals("SUBSTRACTION")) 
{ 
    result=fno-sno; 
    out.println("The result of substraction= "+result); 
} 


if (choice.equals("END")) 
{ 
    out.println("Thank you have a nice day"); 
    return; 
} 


    out.println("<br><br><br>"); 
    doGet(s,t); 
{ 
    out.println("<br><br><br>"); 
    out.println("bye bye"); 
} 

} 

}

我真的不明白爲什麼這種情況發生。請給我任何參考或提示。

回答

4
int fno=Integer.parseInt(firstno); 
int sno=Integer.parseInt(secondno); 

它應該變量firstno,但不是一個字符串"firstno"

1

您正在傳遞String的不是變量。

int fno=Integer.parseInt("firstno"); 
    int sno=Integer.parseInt("secondno"); 

int fno=Integer.parseInt(firstno); 
    int sno=Integer.parseInt(secondno); 

而且我建議,trim()傳遞之前,將字符串,因爲有時空格,從html來使有你試圖轉換的exceptions.

0

類型一個數字的非數字字符串。

我相信你應該這樣做

 String firstno = s.getParameter("first"); 
     String secondno = s.getParameter("Second"); 

     int fno=Integer.parseInt(firstno); 
     int sno=Integer.parseInt(secondno); 
1

你試圖解析字符串"firstno",變量firstno的不是內容。 "firstno"不是合法的整數,其中firstno的內容可能非常合適。

0

使用一個變量名而不是字符串

int fno=Integer.parseInt(firstno); 
    int sno=Integer.parseInt(secondno); 

幾個值添加到您的代碼,

  • 添加驗證代碼
  • 添加空校驗參數值獲取/設置默認值/顯示錯誤消息當值不通過
  • 處理NumberFormatException並設置一個默認值/顯示錯誤消息
  • 返回完整的HTML文檔的內容類型
  • 使用RequestDispatcher到HTTP方法郵政之間進行切換來獲得,或更好地利用重定向後得到的圖案

所指出的。Java EE Tutorial將是一個很好的起點

相關問題