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

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

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

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

Q&A

0回答

1625閲覧

Java if文 一定の範囲の数字を評価値に直して合計値を出したい

rindou0088

総合スコア5

Java

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

0グッド

0クリップ

投稿2019/09/18 13:47

javaでブラックジャックのカウンティングを行うプログラムを作成しています。

トランプの1から13までの数値を評価値に直してその合計を出したいです。

26の数字は評価値1,79の数字は評価値0,10~14の数字(1は14として扱う)は評価値-1

3枚のカード引いて、仮に10,10,10の3つの数値を得た場合に評価値はそれぞれ-1,-1,-1と

なりその値を合計すると-3となります。

評価値を出すところまではできたのですが評価値を合計する文がコンパイルする際にエラー

が表示されます。

エラー(3つ)は次の通りです。

シンボルを見つけられません。変数 num4 num5 num6
System.out.println("評価値の合計は" +(num4+num5+num6)+ "です。");

ソースコードは以下です。

import java.io.*;

class Counting
{
public static void main(String[] args) throws IOException
{
System.out.println("ディーラーのカード1枚と自分のカード2枚の数字を入力して下さい");

BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));

String str1 = br.readLine();
String str2 = br.readLine();
String str3 = br.readLine();

int num1 = Integer.parseInt(str1);
int num2 = Integer.parseInt(str2);
int num3 = Integer.parseInt(str3);

//ディーラーのカードの数 2~6
if(num1 >=2 && num1 <= 6 && num1 ==2){
System.out.println("評価値は" + (num1-1) + "です");
int num4 = (num1-1);
}

else if(num1 >=2 && num1 <= 6 && num1 ==3){
System.out.println("評価値は" + (num1-2) + "です");
int num4 = (num1-2);
}

else if(num1 >=2 && num1 <= 6 && num1 ==4){
System.out.println("評価値は" + (num1-3) + "です");
int num4 = (num1-3);
}

else if(num1 >=2 && num1 <= 6 && num1 ==5){
System.out.println("評価値は" + (num1-4) + "です");
int num4 = (num1-4);
}

else if(num1 >=2 && num1 <= 6 && num1 ==6){
System.out.println("評価値は" + (num1-5) + "です");
int num4 = (num1-5);
}

//ディーラーのカードの数 7~9

else if(num1 >=7 && num1 <=9 && num1 ==7){
System.out.println("評価値は" + (num1-7) + "です");
int num4 = (num1-7);
}

else if(num1 >=7 && num1 <=9 && num1 ==8){
System.out.println("評価値は" + (num1-8) + "です");
int num4 = (num1-8);
}

else if(num1 >=7 && num1 <=9 && num1 ==9){ System.out.println("評価値は" + (num1-9) + "です"); int num4 = (num1-9);

}

//ディーラーのカードの数 10~14
else if(num1 >=10 && num1 <=14 && num1 ==10){
System.out.println("評価値は" + (num1-11) + "です");
int num4 = (num1-11);
}

else if(num1 >=10 && num1 <=14 && num1 ==11){
System.out.println("評価値は" + (num1-12) + "です");
int num4 = (num1-12);
}

else if(num1 >=10 && num1 <=14 && num1 ==12){
System.out.println("評価値は" + (num1-13) + "です");
int num4 = (num1-13);
}

else if(num1 >=10 && num1 <=14 && num1 ==13){
System.out.println("評価値は" + (num1-14) + "です");
int num4 = (num1-14);
}

else if(num1 >=10 && num1 <=14 && num1 ==14){
System.out.println("評価値は" + (num1-15) + "です");
int num4 = (num1-15);
}

else{
System.out.println("数値が正しくありません");
}

//自分のカードの数(1枚目) 2~6
if(num2 >=2 && num2 <= 6 && num2 ==2){
System.out.println("評価値は" + (num2-1) + "です");
int num5 = (num2-1);
}

else if(num2 >=2 && num2 <= 6 && num2 ==3){
System.out.println("評価値は" + (num2-2) + "です");
int num5 = (num2-2);
}

else if(num2 >=2 && num2 <= 6 && num2 ==4){
System.out.println("評価値は" + (num2-3) + "です");
int num5 = (num2-3);
}

else if(num2 >=2 && num2 <= 6 && num2 ==5){
System.out.println("評価値は" + (num2-4) + "です");
int num5 = (num2-4);
}

else if(num2 >=2 && num2 <= 6 && num2 ==6){
System.out.println("評価値は" + (num2-5) + "です");
int num5 = (num2-5);
}

//自分のカードの数(1枚目) 7~9

else if(num2 >=7 && num2 <=9 && num2 ==7){
System.out.println("評価値は" + (num2-7) + "です");
int num5 = (num2-7);
}

else if(num2 >=7 && num2 <=9 && num2 ==8){
System.out.println("評価値は" + (num2-8) + "です");
int num5 = (num2-8);
}

else if(num2 >=7 && num2 <=9 && num2 ==9){ System.out.println("評価値は" + (num2-9) + "です"); int num5 = (num2-9);

}

//自分のカードの数(1枚目) 10~14
else if(num2 >=10 && num2 <=14 && num2 ==10){
System.out.println("評価値は" + (num2-11) + "です");
int num5 = (num2-11);
}

else if(num2 >=10 && num2 <=14 && num2 ==11){
System.out.println("評価値は" + (num2-12) + "です");
int num5 = (num2-12);
}

else if(num2 >=10 && num2 <=14 && num2 ==12){
System.out.println("評価値は" + (num2-13) + "です");
int num5 = (num2-13);
}

else if(num2 >=10 && num2 <=14 && num2 ==13){
System.out.println("評価値は" + (num2-14) + "です");
int num5 = (num2-14);
}

else if(num2 >=10 && num2 <=14 && num2 ==14){
System.out.println("評価値は" + (num2-15) + "です");
int num5 = (num2-15);
}

else{
System.out.println("数値が正しくありません");
}

//自分のカードの数(2枚目) 2~6
if(num3 >=2 && num3 <= 6 && num3 ==2){
System.out.println("評価値は" + (num3-1) + "です");
int num6 = (num3-1);
}

else if(num3 >=2 && num3 <= 6 && num3 ==3){
System.out.println("評価値は" + (num3-2) + "です");
int num6 = (num3-2);
}

else if(num3 >=2 && num3 <= 6 && num3 ==4){
System.out.println("評価値は" + (num3-3) + "です");
int num6 = (num3-3);
}

else if(num3 >=2 && num3 <= 6 && num3 ==5){
System.out.println("評価値は" + (num3-4) + "です");
int num6 = (num3-4);
}

else if(num3 >=2 && num3 <= 6 && num3 ==6){
System.out.println("評価値は" + (num3-5) + "です");
int num6 = (num3-5);
}

//自分のカードの数(2枚目) 7~9

else if(num3 >=7 && num3 <=9 && num3 ==7){
System.out.println("評価値は" + (num3-7) + "です");
int num6 = (num3-7);
}

else if(num3 >=7 && num3 <=9 && num3 ==8){
System.out.println("評価値は" + (num3-8) + "です");
int num6 = (num3-8);
}

else if(num3 >=7 && num3 <=9 && num3 ==9){ System.out.println("評価値は" + (num3-9) + "です"); int num6 = (num3-9);

}

//自分のカードの数(2枚目) 10~14
else if(num3 >=10 && num3 <=14 && num3 ==10){
System.out.println("評価値は" + (num3-11) + "です");
int num6 = (num3-11);
}

else if(num3 >=10 && num3 <=14 && num3 ==11){
System.out.println("評価値は" + (num3-12) + "です");
int num6 = (num3-12);
}

else if(num3 >=10 && num3 <=14 && num3 ==12){
System.out.println("評価値は" + (num3-13) + "です");
int num6 = (num3-13);
}

else if(num3 >=10 && num3 <=14 && num3 ==13){
System.out.println("評価値は" + (num3-14) + "です");
int num6 = (num3-14);
}

else if(num3 >=10 && num3 <=14 && num3 ==14){
System.out.println("評価値は" + (num3-15) + "です");
int num6 = (num3-15);
}

else{
System.out.println("数値が正しくありません");
}

System.out.println("評価値の合計は" +(num4+num5+num6)+ "です。");
}
}

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

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

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

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

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

LouiS0616

2019/09/18 13:58

とりあえず、『一枚カードの数字が入力されたとき、評価値を出力する』ようなプログラムを書いてみると良いです。 大変失礼な物言いで恐縮ですが、現状の実力が課題に対して全く見合っていません。
y_waiwai

2019/09/18 14:02

エラーが出るならエラーメッセージを、そのままコピペで提示しましょうねw 隠したい気持ちはわかりますがw
rindou0088

2019/09/18 14:08

ご指摘ありがとうございます。 実力はないですが書いていくことで上達しないでしょうか。
y_waiwai

2019/09/18 14:10

そのまま書き写すすことでは上達はしません。 エラーの意味を理解し、その対処法を真面目に理解しましょう
rindou0088

2019/09/18 14:10

隠したかったわけではないです。 cmdでコンパイルしてるのですが、コピーが できなかったので。
y_waiwai

2019/09/18 14:12

なら、エラーメッセージの意味を理解しましょうよ。 出ているものを見なかったことにしていてはなにも前進はしませんぜ
y_waiwai

2019/09/18 14:13

> シンボルを見つけられません。変数 num4 num5 num6 の意味は理解できませんか?
LouiS0616

2019/09/18 14:14

スタートラインに立つ実力が無い、ということです。 知識に乏しいまま山に登っても失敗するだけです。そして失敗した原因を知る為にも実力が必要です。 一切無駄だとは言いませんが、非常に効率が悪いように思います。
rindou0088

2019/09/18 14:16

分かりました。 ありがとうございます。
rindou0088

2019/09/18 14:29

シンボルが見つけられません。は変数の名前か定義されていないから。と調べたら出てきました。 if文の中でそれぞれ定義したつもりでした。
swordone

2019/09/18 14:35

変数のスコープについて調べて出直してください。
rindou0088

2019/09/18 14:38

アドバイスありがとうございます。 調べてみます。
jimbe

2019/09/19 03:35

> if(num1 >=2 && num1 <= 6 && num1 ==2){ このような if 文が並んでいますが, 『「num1 >=2」かつ「num1 <= 6」かつ「num1 ==2」』ということは, 結局最後の「num1 ==2」だけで良いことにお気付きになられますでしょうか. また > System.out.println("評価値は" + (num1-1) + "です"); > int num4 = (num1-1); と表示と代入でそれぞれ「(num1-1)」を計算されていますが, 表示と代入の順を逆にすれば num4 = (num1-1); System.out.println("評価値は" + num4 + "です"); と計算は一度で済みます. さらには, if 文の条件に合わせますと, 「num1 == 2」の時に「num4 = (num1-1)」ですので計算する必要は無く, 「num4 = 1」だけで済みます. ここまではコードレベルの修正ですが, そもそも仕様が「2~6の数字は評価値1」ですので, 「num1 == 2」「num1 == 3」…と if 文が並ぶ必要も無く if(num1 >=2 && num1 <= 6){ num4 = 1; System.out.println("評価値は" + num4 + "です"); } で 1~6 の評価がまとめて出来ます.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問