質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

1058閲覧

Java サブクラスそれぞれのArrayListの合計値を取得して表示させたい

kixx

総合スコア14

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1グッド

0クリップ

投稿2020/01/09 16:51

前提・実現したいこと

Javaを使用した練習問題でブラックジャックを作成しています。
実行結果でディーラー、ユーザーそれぞれの結果の数を表示させる方法が分かりません。
似た内容の投稿を行なってしまい申し訳ありませんが、アドバイスをいただきたいです。
また、コードの書き方について更に良い書き方があったら教えていただきたいです。
よろしくお願いします。

現在の実行結果

カードを配ります
ディーラー[]
ユーザー[]
結果:引き分け

該当のソースコード

BlackJack.java

Java

1package blackjack; 2 3public class BlackJack { 4 public static void main(String[] args) { 5 6 Dealer dealer = new Dealer(); 7 User user = new User(); 8 9 System.out.println("カードを配ります"); 10 11 //dealerの結果カード 12 System.out.println("ディーラー" + dealer.myCards ←ここの書き方が分かりません); 13 14 //userの結果カード 15 System.out.println("ユーザー" + user.myCards ←ここの書き方が分かりません); 16 17 System.out.print("結果:"); 18 19 if(user.open() == 21) { 20 System.out.println("ブラックジャック!あなたの勝ち"); 21 }else if(user.open() <= 21 && dealer.open() > user.open()){ 22 System.out.println("あなたの勝ち"); 23 }else if(user.open() > 21){ 24 System.out.println("バースト!あなたの負け"); 25 }else if(user.open() < dealer.open()){ 26 System.out.println("あなたの負け"); 27 }else if(user.open() == dealer.open()){ 28 System.out.println("引き分け"); 29 } 30 } 31}

Human.java

Java

1package blackjack; 2import java.util.ArrayList; 3 4public abstract class Human { 5 6 //手札の合計値を計算する 7 abstract public int open(); 8 9 //引いたカードを手元に追加する 10 abstract public void setCards(ArrayList<Integer> set); 11 12 //手札の合計値によってまだ引くべきかを決定する 13 abstract public boolean checkSum(); 14 15 //UserとDealerの持つ手札の情報 16 ArrayList<Integer> myCards = new ArrayList<Integer>(); 17 18}

Dealer.java

Java

1package blackjack; 2import java.util.ArrayList; 3import java.util.Collections; 4 5public class Dealer extends Human { 6 7 //インスタンスが作られた時に呼び出される 8 public Dealer() { allCards(); } 9 10 //山札 11 ArrayList <Integer> cards = new ArrayList<Integer>(); 12 13 //全てのトランプを持たせてシャッフルする 14 public void allCards() { 15 for(int n=1;n<=4;n++) { 16 for(int i=1;i<=13;i++) { 17 cards.add(i); 18 } 19 } 20 Collections.shuffle(cards); 21 } 22 23 //ディーラーが配るカードを山札から2枚決める 24 ArrayList<Integer> deal = new ArrayList<Integer>(); 25 protected ArrayList<Integer> deal(){ 26 deal.add(cards.get(0)); 27 deal.add(cards.get(1)); 28 cards.remove(0); 29 cards.remove(1); 30 return deal; 31 } 32 33 //checkSum()がtrueだった場合、山札から1枚取る 34 ArrayList<Integer> hit = new ArrayList<Integer>(); 35 protected ArrayList<Integer> hit(){ 36 hit.add(cards.get(0)); 37 cards.remove(0); 38 return hit; 39 } 40 41 //手札にセットする 42 public void setCards(ArrayList<Integer> set) { 43 myCards.addAll(deal); 44 if(checkSum()) { 45 hit(); 46 myCards.addAll(hit); 47 } 48 } 49 50 //手札の合計値によってまだ引くべきかを決定する 51 public boolean checkSum() { 52 if (open() <= 15) { 53 return true; 54 }else{ 55 return false; 56 } 57 } 58 59 //手札の合計値を計算する 60 public int open() { 61 int total_cards = 0; 62 for(int i=1;i<=myCards.size();i++) { 63 if(10 <= myCards.get(i)) { 64 myCards.set(i, 10); 65 } 66 total_cards += myCards.get(i); 67 } 68 return total_cards; 69 } 70}

User.java

Java

1package blackjack; 2import java.util.ArrayList; 3 4public class User extends Human { 5 6 Dealer dealer = new Dealer(); 7 8 public void setCards(ArrayList<Integer> set) { 9 myCards.addAll(dealer.deal); 10 if(checkSum()) { 11 dealer.hit(); 12 myCards.addAll(dealer.hit); 13 } 14 } 15 16 public int open() { 17 int total_cards = 0; 18 for(int i=1;i<=myCards.size();i++) { 19 if(10 <= myCards.get(i)) { 20 myCards.set(i, 10); 21 } 22 total_cards += myCards.get(i); 23 } 24 return total_cards; 25 } 26 27 public boolean checkSum() { 28 if (open() <= 15) { 29 return true; 30 }else{ 31 return false; 32 } 33 } 34}
swordone👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

なにかしら, ご質問の度にコードが悪くなっているようです.
所謂「ツッコミ所が多過ぎ」て, ご質問の回答をしても正常に動作しない事が目に見えています.
果たしてどうしたものか...


他のご質問に書かれていたのですが, この課題はなんとかいう無料スクールでのものなのでしょうか.
だとすれば, そのスクールで講師に聞いたほうが良いのではと思います.

投稿2020/01/09 19:21

編集2020/01/10 03:12
jimbe

総合スコア12545

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

そこの書き方以前に、そもそもカードを配っていないため表示できません。

投稿2020/01/09 17:05

swordone

総合スコア20649

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問