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

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

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

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

1040閲覧

条件分岐による表示切替が効かなくて困りました

vitabrevisarsl1

総合スコア57

Java

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2018/10/04 23:13

編集2018/10/05 00:21

じゃんけんゲームを作っています。

Java

1public class MainActivity extends AppCompatActivity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_main); 7 initGTP(); 8 } 9 10 void initGTP() { 11 12 final Button btn1 = (Button)findViewById(R.id.button1); 13 final Button btn2 = (Button)findViewById(R.id.button2); 14 final Button btn3 = (Button)findViewById(R.id.button3); 15 16 17 btn1.setOnClickListener(new View.OnClickListener() { 18 TextView mee = (TextView)findViewById(R.id.textView2); 19 TextView youu = (TextView)findViewById(R.id.textView4); 20 TextView dorif = (TextView)findViewById(R.id.textView5); 21 int yourP = 1; 22 @Override 23 public void onClick(View view) { 24 /* 0、1、2 を底上げして 1、2、3 */ 25 int j = new java.util.Random(3).nextInt() + 1; 26 27 /* あなた - グー */ 28 youu.setText(btn1.getText()); 29 30 /* 私 Computer - に割振り */ 31 if (j == 1) { 32 mee.setText("グー"); 33 } else if (j == 2) { 34 mee.setText("チョキ"); 35 } else { 36 mee.setText("パー"); 37 } 38 39 /* 余りで比較判定 */ 40 if (yourP % 3 < j) { 41 dorif.setText("あなたの負け"); 42 } else if (yourP % 3 == j) { 43 dorif.setText("あいこ"); 44 } else { 45 dorif.setText("あなたの勝ち"); 46 } 47 } 48 }); 49 50 } 51}

btn1 は「グー」、btn2 は「チョキ」、btn3 は「パー」です(btn1 の setOnClickListener だけ載せています)。
結果を dorif のところに表示したいのですが、「グー」「チョキ」「パー」どれかの最初のクリックで、

1)「あなたの勝ち」と表示されたきり、その後 dorif が変化しない
2)「私」が「パー」しか表示しない

のはなぜなのかがわかりません。
イメージ説明

ふなれな変数名だったり見にくいと思いますが、ご助言いただけますと幸いです。
(みなさまへ:いくつか疑問点があるため、同じ材料で異なるトピックを立てるかもしれません。ご了承いただきますようお願いいたします。)

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

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

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

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

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

guest

回答1

0

ベストアンサー

java

1int j = new java.util.Random(3).nextInt() + 1;

この部分で、「3」を渡すタイミングを間違えています。
コンストラクタに渡す数値は「シード値」(乱数を計算するための初期値のような値)を意味し、シード値が同じなら乱数の並びが全く同じになることが保証されています。反対に、nextIntに引数がないため、intが取りうるすべての値を返し得ます。
さらに、Randomが1回使い切りになっているため、「シード値3で固定された、1回目のnextIntで2を返すRandom」を1回だけ使う、ということを繰り返しているため、「『私』がパーのまま」になっていると思われます。

投稿2018/10/04 23:47

swordone

総合スコア20649

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

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

vitabrevisarsl1

2018/10/05 00:19 編集

ご教授感謝です。Randomの箇所回るようになりました。  引数とシード値と勝敗判定と使い切りの点修正です。 final Button btn1 = (Button)findViewById(R.id.button1); final Button btn2 = (Button)findViewById(R.id.button2); final Button btn3 = (Button)findViewById(R.id.button3); final Random jj = new java.util.Random(); btn1.setOnClickListener(new View.OnClickListener() { TextView mee = (TextView)findViewById(R.id.textView2); TextView youu = (TextView)findViewById(R.id.textView4); TextView dorif = (TextView)findViewById(R.id.textView5); int yourP = 1; @Override public void onClick(View view) { int j = jj.nextInt(3) + 1; youu.setText(btn1.getText()); if (j == 1) { mee.setText("グー"); } else if (j == 2) { mee.setText("チョキ"); } else { mee.setText("パー"); } if (yourP % 3 + 1 == j) { dorif.setText("あなたの勝ち"); } else if (yourP % 3 == j) { dorif.setText("あいこ"); } else { dorif.setText("あなたの負け"); } }
swordone

2018/10/05 00:46

勝敗判定がよくわからないですね… yourPとはなんですか?
vitabrevisarsl1

2018/10/05 01:43 編集

グー:1 チョキ:2 パー:3 btn1 は[グー]なので yourP(oint:「あなた」の手) =1 としておいて、Random で生成された1、2、3と比較する、という構造です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問