2

1つのプログラムを実行しようとしています。私はJavaの初心者です。プログラムを実行すると、次の例外が発生します..

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

5 に答える 5

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

可変ですfirstnoが、文字列ではありません"firstno"

于 2013-08-30T14:38:07.270 に答える
1

変数ではなく文字列を渡しています。

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

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

trim() そして、私はそれを渡す前の文字列をお勧めしhtml ます。exceptions.

于 2013-08-30T14:38:47.840 に答える
0

文字列の代わりに変数名を使用する

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

コードへの付加価値はほとんどなく、

  • コードに検証を追加する
  • 取得した Null チェック パラメータ値を追加する / デフォルト値を設定する / 値が渡されなかった場合にエラー メッセージを表示する
  • NumberFormatExceptionデフォルト値の処理と設定 / エラー メッセージの表示
  • コンテンツ タイプによって示される完全な HTML ドキュメントを返す
  • RequestDispatcherを使用して HTTP メソッドを切り替えて取得するか、ポスト リダイレクト取得パターンを使用することをお勧めします

Java EE チュートリアルは良い出発点になるでしょう

于 2013-08-30T14:56:56.220 に答える