サーブレットを用いて、画面の遷移や値の受け渡しをしているのですが、その際にこのエラーが出てしまい先に進むことができず、行き詰ってしまったので質問を投稿させていただきました。
サーブレットのソースファイルをコンパイルした際には、エラーは発生しておらずクラスファイルの作成もできています。
コードなどが必要でしたら、ご指摘下さい。
java
1public class Account{ 2 private String name; //口座名 3 private int balance; //口座の残高 4 5 public Account(String myName){ //口座名 6 name = myName; 7 balance = 0; 8 } 9 10 public int deposit(int amount){ //預金額 11 if(amount <= 0) 12 return -3; 13 else 14 balance += amount; 15 return 0; 16 } 17 18 public int withdraw(int amount){ //出金額 19 if(amount <= 0) 20 return -3; 21 else if(amount > balance) 22 return -1; 23 else 24 balance -= amount; 25 return 0; 26 } 27 28 public int showBalance(){ //残高照会 29 return balance; 30 } 31} 32
java
1import java.io.IOException; 2import java.io.PrintWriter; 3import javax.servlet.ServletException; 4import javax.servlet.http.HttpServlet; 5import javax.servlet.http.HttpServletRequest; 6import javax.servlet.http.HttpServletResponse; 7 8public class BankServlet extends HttpServlet { 9 private ExtendedBank bank; /* 口座の管理をするオブジェクト */ 10 public BankServlet() { /* bankを初期化する */ 11 bank = new ExtendedBank(); 12 } 13 14 public void doGet(HttpServletRequest request, HttpServletResponse response) 15 throws IOException, ServletException { 16 String b_name = request.getParameter("name"); 17 int result = bank.open(b_name); 18 response.setContentType("text/html; charset=UTF-8"); 19 PrintWriter pw = response.getWriter(); 20 /* 口座開設処理 */ 21 if(result == 0) { /* 口座開設成功のHTML生成*/ 22 23 pw.println( 24 "<!DOCTYPE html>" 25 +"<html>" 26 +"<head>" 27 +"<meta charset=\"UTF-8\">" 28 +"</head>" 29 +"<body>" 30 +"<div class=\"main\">" 31 +"<h1>口座開設成功</h1>" 32 +"<h2>+ b_name +様の口座を開設致しました!</h2>" 33 +"</div>" 34 +"<a class=\"success\" href=\"index.html\">メインメニューに戻る</a>" 35 +"</body>" 36 +"</html>"); 37 38 } else { /*口座開設失敗のHTML生成 */ 39 40 pw.println( 41 "<!DOCTYPE html>" 42 +"<html>" 43 +"<head>" 44 +"<meta charset=\"UTF-8\">" 45 +"</head>" 46 +"<body>" 47 +"<div class=\"main\">" 48 +"<h1>口座開設失敗</h1>" 49 +"<h2>+ b_name +様の口座は既に存在しております。</h2>" 50 +"</div>" 51 +"<a class=\"success\" href=\"index.html\">メインメニューに戻る</a>" 52 +"</body>" 53 +"</html>"); 54 } 55 } 56}
java
1import java.util.Hashtable; 2 3public class ExtendedBank{ 4 private Hashtable<String,Account>customer; // 口座リスト 5 private int balance; // 残高格納用 6 7 public ExtendedBank(){ // 口座リスト初期化 8 customer = new Hashtable<String,Account>(); 9 } 10 11 public int open(String name){ // 口座開設 12 Account myaccount = customer.get(name); 13 14 if(customer.get(name) != null) return -7; 15 else{ 16 customer.put(name,new Account(name)); 17 return 0; 18 } 19 } 20 21 public int close(String name){ // 口座解約 22 Account myaccount = customer.get(name); 23 24 if(customer.get(name) != null){ 25 if(myaccount.showBalance() == 0){ 26 customer.remove(name); 27 return 0; 28 }else return -1; 29 }else return -7; 30 } 31 32 33 public int withdraw(String name,int amount){ // 引き出し 34 Account myaccount = customer.get(name); 35 36 if(customer.get(name) != null){ 37 if(amount <= 0) 38 return -3; 39 else if(amount > balance) 40 return -1; 41 else{ 42 balance -= amount; 43 return 0; 44 } 45 }else return -7; 46 } 47 48 49 public int deposit(String name,int amount){ // 預金 50 Account myaccount = customer.get(name); 51 if(customer.get(name) == null) 52 return -7; 53 else if(amount <= 0) 54 return -3; 55 else{ 56 balance += amount; 57 return 0; 58 } 59 } 60 61 62 public int showBalance(String name){ // 残高照会 63 Account myaccount = customer.get(name); 64 if(customer.get(name) != null) return myaccount.showBalance(); 65 else return -7; 66 } 67 68 // ExtendedBank要素 69 // 預金 70 public int deposit(String name,String amount){ // name:口座名 d_amount:預金額 71 int result; 72 73 try{ 74 result = Integer.parseInt(amount); 75 }catch(NumberFormatException e){ 76 if(this.showBalance(name) == -7) 77 return -7; 78 else 79 return -4; 80 } 81 82 result = Integer.parseInt(amount); 83 if(result <= 0) 84 return -3; 85 else{ 86 balance += result; 87 return 0; 88 } 89 } 90 91 // 引き出し 92 public int withdraw(String name,String amount){ // name:口座名 w_amount:引出額 93 int result; 94 95 try{ 96 result = Integer.parseInt(amount); 97 }catch(NumberFormatException e){ 98 if(this.showBalance(name) == -7) 99 return -7; 100 else 101 return -4; 102 } 103 104 result = Integer.parseInt(amount); 105 if(result <= 0) 106 return -3; 107 else if(result > balance) 108 return -1; 109 else{ 110 balance -= result; 111 return 0; 112 } 113 } 114} 115
java
1import java.io.IOException; 2import java.io.PrintWriter; 3import javax.servlet.ServletException; 4import javax.servlet.http.HttpServlet; 5import javax.servlet.http.HttpServletRequest; 6import javax.servlet.http.HttpServletResponse; 7 8public class OpenServlet extends HttpServlet{ 9 public void doGet(HttpServletRequest request, HttpServletResponse response) 10 throws IOException, ServletException { 11 12 response.setContentType("text/html; charset=UTF-8"); 13 PrintWriter pw = response.getWriter(); 14 15 pw.println( 16 "<!DOCTYPE html>" 17 +"<html>" 18 +"<head>" 19 +"<meta charset=\"utf-8\">" 20 +"</head>" 21 +"<body>" 22 +"<div class=\"main\">" 23 +"<h1>口座開設</h1>" 24 +"<form action=\"bank\" method=\"GET\">" 25 +"<input type=\"hidden\" name=\"command\" value=\"open\">" 26 +"<div class=\"input\">" 27 +"<label for=\"account\">口座名</label>" 28 +"<input type=\"text\" name=\"name\" placeholder=\"入力された口座名\">" 29 +"<input type=\"submit\" value = \"確認\">" 30 +"</div>" 31 +"</form>" 32 +"<a class=\"cancel\" href=\"index.html\">キャンセル</a>" 33 +"</div>" 34 +"</body>" 35 +"</html>"); 36 } 37} 38
html
1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>口座操作画面</title> 6 </head> 7 8 <body> 9 <center> 10 <div id="top-main"> 11 <h1>いらっしゃいませ</h1> 12 <h2>操作をお選び下さい</h2> 13 </div> 14 <!-- 選択 --> 15 <nav class="menu"> 16 <ul> 17 <li class="menu_item"><a href="open">口座開設</a></li> 18 <li class="menu_item"><a href="close">口座解約</a></li> 19 <li class="menu_item"><a href="deposit">お預入れ</a></li> 20 <li class="menu_item"><a href="withdraw">お引出し</a></li> 21 <li class="menu_item"><a href="balance">残高照会</a></li> 22 </ul> 23 </nav> 24 </center> 25 </body> 26</html>
回答1件
あなたの回答
tips
プレビュー