前提
Javaで掛け金システムのある丁半プログラムを作っています。
実現したいこと
System.out.println("半(=1)か丁(=2)か?");
の後に1,2以外の数字が入力された場合、【エラー】入力できるのは1と2です と
出したいのですが、出力結果が
4(入力された数字)
//ここに1,2以外が入力されたときに「【エラー】入力できるのは1と2です」といれて"半(=1)か丁(=2)か?"と表示し、再び入力できるようにしたいです。
6(さいの目の数字)
発生している問題・エラーメッセージ
該当のソースコード
Java
1import java.util.Scanner; 2public class Main { 3 public static void main(String[] args) { 4 int syojikin = 100; 5 System.out.print("所持金=" + syojikin); 6 Scanner betsc = new Scanner(System.in); 7 Scanner scanner = new Scanner(System.in); 8 Scanner kake = new Scanner(System.in); 9 while (!scanner.nextLine().equals("end")) { 10 System.out.print("掛け金を入力:"); 11 String kakekinsc = kake.next(); 12 if (kakekinsc.equals("end")) { 13 break; 14 } 15 int kakekin = Integer.parseInt(kakekinsc); 16 if (kakekin > syojikin) { 17 System.out.println("所持金以上の金額は賭けられません。"); 18 continue; 19 } 20 int zandaka = syojikin - kakekin; 21 System.out.println("残高" + zandaka); 22 while(){ 23 System.out.println("半(=1)か丁(=2)か?"); 24 String bet1sc = betsc.next(); 25 int bet = Integer.parseInt(bet1sc); 26 if (bet <= -1 || bet >= 3){ 27 System.out.println("【エラー】入力できるのは1と2です"); 28 continue; 29 } 30 boolean bb = bet1sc.chars().allMatch(Character::isDigit); 31 if (bb != true) { 32 System.out.println("【エラー】入力できるのは整数だけです"); 33 continue; 34 } 35 int sai = 1 + (int)(Math.random() * 6.0); 36 System.out.println(sai); 37 boolean b = (sai % 2 == 0); 38 boolean b1 = (bet % 2 == 0); 39 if (b == true && b1 == true) { 40 System.out.println("当たり!"); 41 zandaka = zandaka + (kakekin * 2); 42 System.out.print("残高" + zandaka); 43 syojikin = zandaka; 44 continue; 45 } else if (b == true && b1 != true) { 46 System.out.println("はずれ!"); 47 System.out.print("残高" + zandaka); 48 syojikin = zandaka; 49 if (syojikin == 0) { 50 break; 51 } 52 continue; 53 } else if (b != true && b1 != true) { 54 System.out.println("当たり!"); 55 zandaka = zandaka + (kakekin) * 2; 56 System.out.print("残高" + zandaka); 57 syojikin = zandaka; 58 continue; 59 } else if (b != true && b1 == true) { 60 System.out.println("はずれ!"); 61 System.out.print("残高" + zandaka); 62 syojikin = zandaka; 63 if (syojikin == 0) { 64 break; 65 } 66 continue; 67 } 68 scanner.close(); 69 } 70 scanner.close(); 71 } 72} 73}
試したこと
・System.out.println("【エラー】入力できるのは1と2です");
continue;
と書きましたが
出力結果は
【エラー】入力できるのは「0~2」です
掛け金を入力:
と掛け金設定まで戻ってしまいます。
・while文の条件に何を書いたらいいかがわからず止まってしまいました。
補足情報(FW/ツールのバージョンなど)
Java8です
ご回答いただいたpig_vba様、jimbe様
アドバイスいただきありがとうございました。大変勉強になりました。
また皆さんに一つお聞きしたいことがありまして、このようなJavaやプログラム等で必要なmethodごとに分ける部分を見分ける方法やコツなどありますでしょうか?
java初心者で問題を見たとき、まずはどこから書いたらいいのかなと迷うことが多く、
コメントでいただけたら幸いです。
回答2件
あなたの回答
tips
プレビュー