質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

1回答

1327閲覧

servletのエラー

qwerty123

総合スコア26

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2015/06/13 09:34

サーブレットとhtmlを使って、以下のプログラムを作成しました。

-----Servlet-----

package jp.co.iti.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**

  • Servlet implementation class Calc

*/
@WebServlet("/Calc")
public class Calc extends HttpServlet {
private static final long serialVersionUID = 1L;

/** * Default constructor. */ public Calc1() { // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request,

HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
// TODO Auto-generated method stub

request.setCharacterEncoding("utf-8"); response.setContentType("text/html; charset=UTF-8"); PrintWriter out = response.getWriter(); String num1str=request.getParameter("number1"); //入力された整数 String num2str=request.getParameter("number2"); //入力された整数 String calc = request.getParameter("calc"); //符号 int ans = 0; //空欄の時 if(num1str == "" || num2str == ""){ out.println("<html><body>"); out.println("NULL"); out.println("</body></html>"); }else{ out.println("<html><body>"); int num1 = Integer.parseInt(num1str); int num2 = Integer.parseInt(num2str); if(calc.equals("add")){ ans = num1 + num2; out.println(ans); } else if(calc.equals("sub")){ ans = num1 - num2; out.println(ans); } else if(calc.equals("mul")){ ans = num1 * num2; out.println(ans); } else if(calc.equals("div")){ ans = num1 / num2; out.println(ans); } out.println("</body></html>"); } }

}

-----HTML-----

<!DOCTYPE> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Servlet</title> <script language="javascript" type="text/javascript"> <!-- function formCheck(){ // 半角数字以外で入力された場合は送信しない if(document.Form.number1.value.match(/[^0-9]+/) || document.Form.number2.value.match(/[^0-9]+/)){ //alertを表示 window.alert( '半角数字で入力してください' ) return false; //半角数字で入力されている場合は計算 //0で除算されている場合は送信しない }else if(number2.value.equals("0") && calc.value.equals("div")) { window.alert('0で割ることはできません'); return false; //0以外なら送信 }else{ return true; } } // --> </script> </head> <body> <h1>Servlet</h1> <form name="Form" action="Calc" onsubmit="return formCheck()"> <input type="text" name="number1"> <br><br> <input type="text" name="number2"> <br><br> <select name="calc"> <option value="add">足し算</option> <option value="sub">引き算</option> <option value="mul">掛け算</option> <option value="div">割り算</option> </select>

<br><br>

<input type="submit" value="送信"> <input type="reset" value="取消"> </form> </body> </html>

0で除算が行われた場合はエラーを表示(Javascriptを使用)、その時のifの
条件式に問題があると思うのですが、どのように修正したらよいでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

JavaScriptにしなくても良さそうですが、こういう感じでどうですか?
JavaScriptにするなら「エラー」のところに直接JavaScriptを書けばOKです。

lang

1else if(calc.equals("div")){ 2 if (num2 == 0) { 3 out.println("エラー:0の除算です"); 4 } 5 else { 6 ans = num1 / num2; 7 out.println(ans); 8 } 9}

投稿2015/06/13 10:39

argius

総合スコア9388

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問