コードpackage BJ; import java.util.ArrayList; import java.util.Random; import java.util.Scanner; public class BJ01 { static Scanner scan; public static void main(String[] args) { boolean flg = true; int playersum = 0; int cumsum = 0; scan = new Scanner(System.in); ArrayList<String> playercard = new ArrayList<String>(); ArrayList<String> comcard = new ArrayList<String>(); for (int i = 0; i < 2; i++) { playercard.add(getcard("あなた")); comcard.add(getcard("ディーラー")); } System.out.println(""); System.out.println("あなたの合計は" + cardsum(playercard) + "です。"); System.out.println("ディーラーの合計は" + cardsum(comcard) + "です。"); System.out.println(""); while (true) { playersum = cardsum(playercard); System.out.println("現在の合計は" + playersum + "です。"); System.out.println(); if (playersum > 21) { break; } if(flg == false) { break; } flg = Key(); if (flg == true) { playercard.add(getcard("あなた")); } } while(true) { if (cumsum <= 17 && playersum <= 21) { comcard.add(getcard("ディーラー")); cumsum = cardsum(comcard); }else { break; } } System.out.println("あなた「" + playersum + "」 ディーラー「" + cumsum +"」で"); if (playersum > 21) { System.out.println("バースト!あなたの負けです。"); }else if (cumsum > 21) { System.out.println("バースト!あなたの勝ちです。"); }else if (playersum < cumsum) { System.out.println("あなたの負けです。"); }else if (playersum > cumsum) { System.out.println("あなたの勝ちです。"); }else { System.out.println("ドローです。"); } } private static boolean Key() { while (true) { System.out.println("もう1枚カードを引きますか?(y/n) :"); String yn = scan.next(); if (yn.equals("y")) { return true; }else if (yn.equals("n")) { return false; }else { System.out.println("error: YまたはNを入力してください。"); } } } private static String getcard(String turnplayer) { String[] cardlist = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"}; Random random = new Random(); String card = cardlist[random.nextInt(13)]; System.out.println(turnplayer + "に「" + card + "」が配られました。"); return card; } private static int cardsum(ArrayList<String> cardlist) { int sum = 0; for(int i = 0; i < cardlist.size(); i++) { try { sum += Integer.parseInt(cardlist.get(i)); }catch (NumberFormatException e) { if (cardlist.get(i).equals("J") || cardlist.get(i).equals("Q") || cardlist.get(i).equals("K")); sum += 10; } } for (int i = 0; i < cardlist.size(); i++) { if (cardlist.get(i).equals("A") && sum <= 10) { sum += 11; }else if (cardlist.get(i).equals("A")){ sum ++; } } return sum; } }
エースのカードの処理の仕方が分からず困ってます!
エースのカードを1の場合と11の場合に処理したいのですが誰か教えて頂けたら助かります!
宜しく御願いします。
このコードの場合エースのカードは11で判定されてしまいます。
エースのカードを1と11でも判定処理できるようにしたいです。
回答2件
あなたの回答
tips
プレビュー