JavaでRPGゲームのプログラムを作っています。コマンドに表示されている数字以外の文字列を入力したときのエラーに対処する例外処理をしたいのですが、try,catchを書いてもtryを受け取るcatchがないとエラーメッセージが出てしまいます。
コードが長くなってしまいどこに入れたらいいかわかりません。ご回答お願い致します。
Main.java
1import java.io.BufferedReader; 2import java.io.IOException; 3import java.io.InputStreamReader; 4import java.util.Random; 5import java.util.Scanner; 6 7public class Main { 8 9 public static void main(String[] args) throws IOException { 10 11 //キャラクターの体力 12 Character Braver = new Character(550, "勇者"); 13 Character Enemy = new Character(9999, "魔王"); 14 15 System.out.println("魔王があらわれた!"); 16 17 boolean fin = false; //終了フラグ 18 19 //行動コマンド 20 Command:while (!fin) { 21 for (int i = 0; i < 1; i++) { 22 23 System.out.println(Braver.getName() + "はどうする? 1:たたかう 2:とくぎ 3:どうぐ 4:にげる"); 24 25 //キーボード入力値を取得 26 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 27 int num = Integer.parseInt(br.readLine()); 28 29 //行動の分岐 30 switch (num) { 31 case 1: 32 33 System.out.println("勇者のこうげき!"); 34 System.out.println("ミス!ダメージをあたえることができない!"); 35 System.out.println(" "); 36 37 //Trueである限り攻撃し続ける 38 if (Enemy.getHP() <= 0) { 39 fin = true; 40 } 41 break; 42 43 case 2: 44 45 //特技のコマンド 46 System.out.println("1:メラミ 2:ホイミ 3:はやぶさ斬り 4:ぱふぱふ 5:もどる"); 47 int num1 = Integer.parseInt(br.readLine()); 48 49 switch (num1) { 50 case 1: 51 System.out.println(Braver.getName() + "はメラミをとなえた!"); 52 System.out.println(Enemy.getName() + "に78のダメージ!"); 53 System.out.println(" "); 54 55 Enemy.setHP((Enemy.getHP() - 20)); 56 if (Enemy.getHP() <= 0) { 57 fin = true; 58 } 59 break; 60 61 case 2: 62 System.out.println(Braver.getName() + "はホイミをとなえた!"); 63 System.out.println(Braver.getName() + "のHPが32回復した!"); 64 System.out.println(" "); 65 66 Braver.setHP((Braver.getHP() + 32)); 67 if (Enemy.getHP() <= 0) { 68 fin = true; 69 } 70 break; 71 72 case 3: 73 System.out.println(Braver.getName() + "のはやぶさのごとき高速の2回こうげき!"); 74 System.out.println(Enemy.getName() + "に合計56のダメージ!"); 75 System.out.println(" "); 76 77 Enemy.setHP((Enemy.getHP() - 56)); 78 if (Enemy.getHP() <= 0) { 79 fin = true; 80 } 81 break; 82 83 case 4: 84 System.out.println(Braver.getName() + "は" + Enemy.getName() + "にぱふぱふしてあげた!"); 85 System.out.println(Enemy.getName() + "は冷ややかな視線でこちらを見ている..."); 86 System.out.println(" "); 87 88 Enemy.setHP(Enemy.getHP()); 89 if (Enemy.getHP() <= 0) { 90 fin = true; 91 } 92 break; 93 94 //一つ前に戻るコマンド 95 case 5: 96 continue Command; 97 98 } 99 continue; 100 101 case 3: 102 103 //道具のコマンド 104 System.out.println("1:やくそう 2:うまのふん 3:てんばつの杖 4:もどる"); 105 int num2 = Integer.parseInt(br.readLine()); 106 107 switch (num2) { 108 case 1: 109 110 System.out.println(Braver.getName() + "はやくそうをつかった!"); 111 System.out.println(Braver.getName() + "のHPが30回復した!"); 112 System.out.println(" "); 113 114 Braver.setHP((Braver.getHP() + 30)); 115 if (Enemy.getHP() <= 0) { 116 fin = true; 117 } 118 break; 119 120 case 2: 121 122 System.out.println(Braver.getName() + "はうまのふんをつかった!"); 123 System.out.println("しかしなにも起こらなかった。"); 124 System.out.println(" "); 125 126 Enemy.setHP(Enemy.getHP()); 127 if (Enemy.getHP() <= 0) { 128 fin = true; 129 } 130 break; 131 132 case 3: 133 134 System.out.println(Braver.getName() + "はてんばつの杖をふりかざした!"); 135 System.out.println("あたりにはげしい旋風が巻き起こる!魔王に45ダメージ!"); 136 System.out.println(" "); 137 138 Enemy.setHP((Enemy.getHP() - 45)); 139 if (Enemy.getHP() <= 0) { 140 fin = true; 141 } 142 break; 143 144 case 4: 145 //一つ前に戻るコマンド 146 continue Command; 147 148 } 149 continue; 150 151 case 4: 152 //逃げるコマンド 153 System.out.println("勇者はにげだした!"); 154 System.out.println("しかしまわりこまれてしまった!"); 155 System.out.println(" "); 156 } 157 break; 158 } 159 160 if (!fin) { 161 for(int j = 0; j < 1; j++){ 162 163 //値をランダムに取得し、対応した行動を表示する 164 Random rand = new Random(); 165 int val = rand.nextInt(5); 166 167 switch (val) { 168 case 0: 169 System.out.println(Enemy.getName() + "のこうげき!"); 170 System.out.println(Braver.getName() + "に51のダメージ!"); 171 System.out.println(" "); 172 173 Braver.setHP((Braver.getHP() - 50)); 174 nowHp(Braver,Enemy); 175 break; 176 177 case 1: 178 System.out.println(Enemy.getName() + "のゆびからいてつくはどうがほとばしる!"); 179 System.out.println(Braver.getName() + "にかかっているすべてのじゅもんのききめがなくなった!"); 180 System.out.println(" "); 181 182 nowHp(Braver,Enemy); 183 break; 184 185 case 2: 186 System.out.println(Enemy.getName() + "はイオナズンをとなえた!"); 187 System.out.println(Braver.getName() + "に118のダメージ!"); 188 System.out.println(" "); 189 190 Braver.setHP((Braver.getHP() - 120)); 191 nowHp(Braver,Enemy); 192 break; 193 194 case 3: 195 System.out.println(Enemy.getName() + "はじごくからいかずちをよびよせた!"); 196 System.out.println(Braver.getName() + "に255のダメージ!"); 197 System.out.println(" "); 198 199 Braver.setHP((Braver.getHP() - 255)); 200 nowHp(Braver,Enemy); 201 break; 202 203 case 4: 204 System.out.println(Enemy.getName() + "はふてきにわらっている。"); 205 System.out.println(" "); 206 207 nowHp(Braver,Enemy); 208 break; 209 } 210 continue; 211 212 } 213 } 214 215 if (Braver.getHP() <= 0) { 216 fin = true; 217 } 218 } 219 220 if (Braver.getHP() <= 0) { 221 System.out.println(Braver.getName() + "はちからつきた..."); 222 } 223 } 224 225 //残りHPを表示するメソッド 226 static void nowHp(Character Braver,Character Enemy) { 227 228 if(Braver.getHP() > 0){ 229 System.out.println(Braver.getName() +" HP:"+Braver.getHP()); 230 }else{ 231 System.out.println(Braver.getName() +" HP:0"); 232 } 233 } 234 235}
Character.java
1public class Character { 2 Character(int hp,String name){ 3 this.setHP(hp); 4 this.setName(name); 5 } 6 7 private int HP = 0; 8 private String Name = ""; 9 public int getHP() { 10 return HP; 11 } 12 public void setHP(int hp) { 13 HP = hp; 14 } 15 public String getName() { 16 return Name; 17 } 18 public void setName(String name) { 19 Name = name; 20 } 21}
回答2件
あなたの回答
tips
プレビュー