すいません再び質問です。
じゃんけんの問題です(0がグー、2がチョキ、5がパー、指の本数です)
public class Sample9_2 {
public static void main(String[] args) {
int[] a = { 0, 5, 5, 0 };
int[] b = { 2, 5, 2, 2, 5, 0, };
int[] c = { 5, 0, 2, 0, 2, 5, 2 };
int index = 0;
boolean 同じ手を出していない = true;
while (同じ手を出していない) {
if (a[index % a.length] == b[index % b.length]
&& b[index % b.length] == c[index % c.length]) {
同じ手を出していない = false;
} else {
index++;
}
}
System.out.println((index + 1) + "回目で全員が同じ手を出しました");
}
}
【実行結果】
50回目で全員が同じ手を出しました
boolean 同じ手をだしていない = true と
同じ手を出していない = false の意味がわかりません;
すいませんが回答お願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
「同じ手を出していない」を見やすいようにresultでおいたとします。
そうすると、
public class Sample9_2 {
public static void main(String[] args) {
int[] a = { 0, 5, 5, 0 };
int[] b = { 2, 5, 2, 2, 5, 0, };
int[] c = { 5, 0, 2, 0, 2, 5, 2 };
int index = 0;
boolean result = true;
while (result) {
if (a[index % a.length] == b[index % b.length]
&& b[index % b.length] == c[index % c.length]) {
result = false;
} else {
index++;
}
}
System.out.println((index + 1) + "回目で全員が同じ手を出しました");
}
}
と書き換えることができます。
ここで、while関数は()の中身が真の時に繰り返しを行います。
つまり、while(result)で繰り返されている間は同じ手が出されていないということです。
つぎに、result=falseというのはa,b,cが同じ手を出したことになります。
ということはつぎのwhile(result)は()の中身が偽なのでループ処理がそこで終了します。
indexには最初は0が入っているわけですから、0回目は存在しないので全員が同じ手を出したのは最低でも1回目以降となります。
なので(index + 1)回目で同じ手を出したということです。
あと、変数はできるだけアルファベットで意味をもたせたほうが見やすいプログラムになりますよ
No.1
- 回答日時:
まず、見辛いので、『同じ手を出していない』を変数hogeとしましょう。
boolean hoge = true;
これは、今現在、同じ手を出していないということです。まだ1回も始めていないのですから当たり前ですね。
while (hoge) {
これは、同じ手を出していない間、ずっと繰り返すということです。
hoge = false;
これは、a、b、cの全てが、同じ手を出したから、『同じ手を出していない』ということを否定したわけです。
結果、次のwhile()は否定され、ループから抜けます。
変数の宣言方法などが気になりますが、意味合いとしては上記のようになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- C言語・C++・C# C言語 ポインタ 配列 2 2022/06/02 17:29
- Ruby vscode 文字化け 1 2022/05/21 19:17
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaでcsvファイル読込時の改行...
-
式の型は配列型で int に解決済...
-
C++からC#のdllを参照する際、...
-
JAVAでCの関数ポインタのような...
-
共有メモリについて
-
「配列定数は、イニシャライザ...
-
コード中の謎のエラー
-
C#での画像ファイルをドラッグ...
-
javaでカレンダー作成
-
ビープ音をなめらかに鳴らしたい
-
java spring でエラーが出て困...
-
java 長さの異なる配列の代入
-
JAVA EOFの検出 (条件文で「...
-
SwingでJtableのヘッダ行が表示...
-
Java 初心者 int型の取り扱い方
-
後置インクリメントの計算過程...
-
二分探索木で例えば1〜10の値を...
-
sin曲線とcos曲線を描くプログ...
-
byte[2] から int へ。
-
intが負の時に投げる例外はあり...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javaでcsvファイル読込時の改行...
-
java spring でエラーが出て困...
-
DataSet(DataTable)の使い方
-
「配列定数は、イニシャライザ...
-
JUnit4のアノテーションについて
-
C#で実行時にメソッドの返り値...
-
JAVA エラー 式の開始が不正で...
-
JAVAでCの関数ポインタのような...
-
c# デリゲート関連の命名について
-
java streamでenum配列への変換
-
intが負の時に投げる例外はあり...
-
Java 初心者 int型の取り扱い方
-
C++からC#のdllを参照する際、...
-
アンマネージDLLで、ダイアログ...
-
【C#】フォームをなめらかに移動
-
(Swing)JTextFieldを半角のみ入...
-
Javaで簡単なアニメーションを...
-
javaのエラーの意味がわかりま...
-
C#で判断文(三択)の省略形は...
-
共有メモリについて
おすすめ情報