応用:四則計算アプリ(例外処理)
- 2010-12-02 Thu 15:08:04
- データのやり取り
四則計算アプリに例外処理をして堅固なプログラムにしました。
JSPファイルは「Culc2.jsp」、サーブレットは「Culc2.java」とします。サーブレットのソースだけ掲載します。
package form_entry;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Culc2 extends HttpServlet{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
common(request,response);
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
common(request,response);
}
private void common(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
String error=null;
String num1str=request.getParameter("text1");
String radio=request.getParameter("radio");
String num2str=request.getParameter("text2");
if(num1str==null || num1str.length()==0 ||
num2str==null || num2str.length()==0){
error="必ず2つの整数を入力してください。"; //(1)
}else if(radio==null){
error="計算の種類を選択してください。"; //(2)
}else if(num2str.equals("0")){
error="0で除算は行えません。"; //(3)
}
response.setContentType("text/plain;charset=Windows-31J");
PrintWriter out=response.getWriter();
try{
if(error !=null){
out.println("<html><body>");
out.println("<h3>エラー</h3>");
out.println(error);
out.println("</body></html>");
}else{
int ans=0;
int num1=Integer.parseInt(num1str);
int num2=Integer.parseInt(num2str);
out.println("<html><body>");
out.println("<h3>計算結果</h3>");
if(radio.equals("+")){
ans=num1+num2;
out.println(num1+"+"+num2+"="+ans);
}
else if(radio.equals("-")){
ans=num1-num2;
out.println(num1+"-"+num2+"="+ans);
}
else if(radio.equals("*")){
ans=num1*num2;
out.println(num1+"×"+num2+"="+ans);
}
else if(radio.equals("/")){
ans=num1/num2;
out.println(num1+"÷"+num2+"="+ans);
}
out.println("</body></html>");
}
}catch(NumberFormatException e){
out.println("<html><body>");
out.println("<h3>エラー</h3>");
out.println("整数入力してください。");
out.println("</body></html>"); //(4)
}
}
}
長~いソースになってしまいました。
入力チェックは以下のことを行いました。
(1)から(3)まではif文の中で一気に処理できたのですが、(4)は例外処理をするために try ~ catch の処理をしました。
その他ポイントとしては、String型のerrorという文字列を導入して、これがnullかどうかで場合分けした部分でしょうか。
- テキストボックスが空欄かどうかチェック //(1)
- ラジオボタンを選択してあるかチェック //(2)
- 0で除算しようとした場合のチェック //(3)
- 整数以外の文字を入力した場合のチェック //(4)
(1)から(3)まではif文の中で一気に処理できたのですが、(4)は例外処理をするために try ~ catch の処理をしました。
その他ポイントとしては、String型のerrorという文字列を導入して、これがnullかどうかで場合分けした部分でしょうか。
スポンサーサイト
タグ :
Comments: