前提
JAVAでブラックジャックを作ってます
実現したいこと
リストに入っているenumの文字列をint型に変換したい
sumPointを作りたい
発生している問題・エラーメッセージ
enumが文字列なので値を計算することができない。
該当のソースコード
JAVA
1//Card.java 2interface InterfaceCard{}; 3class Card implements InterfaceCard { 4 private Rank number; 5 private Suit suit; 6 public Card(Rank n, Suit s) { 7 number = n; 8 suit = s; 9 } 10 public Order getNumber() { 11 return number; 12 } 13 14 public String getCardDisp() { 15 return suit.toString() + number.toString(); 16 } 17} 18 19enum Suit{ 20 SPADE("♤"),HEART("♡"),DIAMOND("♢"),CLUB("♧"); 21 private String suit; 22 private Suit(String s) { 23 suit = s; 24 } 25 public String toString() { 26 return suit; 27 } 28} 29enum Rank{ 30 ACE("A"),TWO("2"),THREE("3"),FOUR("4"),FIVE("5"),SIX("6"),SEVEN("7"),EIGHT("8"),NINE("9"),TEN("10"),JACK("J"),QUEEN("Q"),KING("K"); 31 private String order; 32 private Order(String o) { 33 order = o; 34 } 35 public String toString() { 36 return order; 37 } 38} 39 40import java.util.ArrayList; 41import java.util.Collections; 42import java.util.List; 43import java.util.Scanner; 44import java.util.Iterator; 45 46 47 48//Blackjack.java 49public class Blackjack implements InterfaceCard{ 50 51 public static void main(String[] args) { 52 53 System.out.println("ゲーム開始"); 54 //空の山札作成 55 List <String> deck = new ArrayList<>(52); 56 //山札をシャッフル 57 shuffleDeck(deck); 58 59 60 //プレイヤー・ディーラーの手札リスト生成 61 List <String> player = new ArrayList<>(); 62 List <String> dealer = new ArrayList<>(); 63 64 65 //プレイヤー・ディーラーがカードを2枚引く 66 player.add(deck.get(0)); 67 dealer.add(deck.get(1)); 68 player.add(deck.get(2)); 69 dealer.add(deck.get(3)); 70 71 72 //プレイヤー・ディーラーの手札のポイントを表示 73 System.out.println("あなたの1枚目のカードは" + toDescription(player.get(0))); 74 75 System.out.println("ディーラーの1枚目のカードは" + toDescription(dealer.get(0))); 76 77 System.out.println("あなたの2枚めのカードは" + toDescription(player.get(1))); 78 79 System.out.println("ディーラーの2枚めのカードは秘密です。"); 80 81 //プレイヤー・ディーラーのポイントを集計 82 int playerPoint = sumPoint(player); 83 int dealerPoint = sumPoint(dealer); 84 85 System.out.println("あなたの現在のポイントは" + playerPoint + "です。" ); 86 87 88 } 89 90 91 //山札に値を入れ、シャッフルするメソッド 92 private static void shuffleDeck(List<String> deck) { 93 94 Card[] cards = new Card[] { 95 new Card(Rank.ACE, Suit.SPADE), 96 new Card(Rank.TWO, Suit.SPADE), 97 new Card(Rank.THREE, Suit.SPADE), 98 new Card(Rank.FOUR, Suit.SPADE), 99 new Card(Rank.FIVE, Suit.SPADE), 100 new Card(Rank.SIX, Suit.SPADE), 101 new Card(Rank.SEVEN, Suit.SPADE), 102 new Card(Rank.EIGHT, Suit.SPADE), 103 new Card(Rank.NINE, Suit.SPADE), 104 new Card(Rank.TEN, Suit.SPADE), 105 new Card(Rank.JACK, Suit.SPADE), 106 new Card(Rank.QUEEN, Suit.SPADE), 107 new Card(Rank.KING, Suit.SPADE), 108 new Card(Rank.ACE, Suit.HEART), 109 new Card(Rank.TWO, Suit.HEART), 110 new Card(Rank.THREE, Suit.HEART), 111 new Card(Rank.FOUR, Suit.HEART), 112 new Card(Rank.FIVE, Suit.HEART), 113 new Card(Rank.SIX, Suit.HEART), 114 new Card(Rank.SEVEN, Suit.HEART), 115 new Card(Rank.EIGHT, Suit.HEART), 116 new Card(Rank.NINE, Suit.HEART), 117 new Card(Rank.TEN, Suit.HEART), 118 new Card(Rank.JACK, Suit.HEART), 119 new Card(Rank.QUEEN, Suit.HEART), 120 new Card(Rank.KING, Suit.HEART), 121 new Card(Rank.ACE, Suit.DIAMOND), 122 new Card(Rank.TWO, Suit.DIAMOND), 123 new Card(Rank.THREE, Suit.DIAMOND), 124 new Card(Rank.FOUR, Suit.DIAMOND), 125 new Card(Rank.FIVE, Suit.DIAMOND), 126 new Card(Rank.SIX, Suit.DIAMOND), 127 new Card(Rank.SEVEN, Suit.DIAMOND), 128 new Card(Rank.EIGHT, Suit.DIAMOND), 129 new Card(Rank.NINE, Suit.DIAMOND), 130 new Card(Rank.TEN, Suit.DIAMOND), 131 new Card(Rank.JACK, Suit.DIAMOND), 132 new Card(Rank.QUEEN, Suit.DIAMOND), 133 new Card(Rank.KING, Suit.DIAMOND), 134 new Card(Rank.ACE, Suit.CLUB), 135 new Card(Rank.TWO, Suit.CLUB), 136 new Card(Rank.THREE, Suit.CLUB), 137 new Card(Rank.FOUR, Suit.CLUB), 138 new Card(Rank.FIVE, Suit.CLUB), 139 new Card(Rank.SIX, Suit.CLUB), 140 new Card(Rank.SEVEN, Suit.CLUB), 141 new Card(Rank.EIGHT, Suit.CLUB), 142 new Card(Rank.NINE, Suit.CLUB), 143 new Card(Rank.TEN, Suit.CLUB), 144 new Card(Rank.JACK, Suit.CLUB), 145 new Card(Rank.QUEEN, Suit.CLUB), 146 new Card(Rank.KING, Suit.CLUB), 147 }; 148 for(Card card : cards) { 149 deck.add(card.getCardDisp()); 150 } 151 //山札をシャッフル 152 Collections.shuffle(deck); 153 private static int sumPoint() { 154 155 } 156 } 157 158 }
試したこと
補足情報(FW/ツールのバージョンなど)
件名は質問内容の要約を書いてください。
3-1. タイトルには要件を書きましょう
https://teratail.com/help/question-tips#questionTips31
コードはファイル毎にマークダウンを分けてください。
enum は enum であって文字列ではありません。
どれを何にしたいのでしょうか。
enum の値をやたら並べて初期化していますが、 enum に定義されている全値は values() メソッドで配列として得られます。配列内の並びは、定義した順です。
同時に、その順が各値に ordinal として定義されており、 ordinal() メソッドで得られます。
【初心者向け】JavaのEnum型について解説!基本的なメソッドも紹介!
https://www.tech-teacher.jp/blog/java-enum/
Card クラスがあるのに何故ゲームのメインの処理には文字列にしてしまうのでしょう。
deck も player/dealer も List<Card> で良いのではありませんか?

あなたの回答
tips
プレビュー