[解決済み] テスト
2022-01-28 04:02:17
質問内容
そこで、Nim風のJavaゲームを作ることになったのですが...ほとんど作ることに成功したのですが...ただ、2つほど迷っていることがあるのです。
質問1:プログラムはうまく実行され、一度は実行されるのですが、コードを一度通した後、プログラムが終了してしまいます・・・なぜそうなってしまうのか、教えてください(間違ったループを使用しているのでしょうか)。
質問2:なぜプログラムは常にコンピュータをいわゆる"Smart Mode?"になるように選択するのでしょうか。
どんなことでもご相談ください。ありがとうございます :D
以下は私のコードです。
import java.util.*;
public class GameOfNim
{
public static void main (String [] args)
{
Scanner in = new Scanner (System.in);
Random num = new Random ();
int numberLeft = num.nextInt(101-10) + 10;
int computerMode = num.nextInt(1);
int subtraction = numberLeft;
boolean turn = num.nextBoolean();
System.out.println ("The number you start out with is: " + numberLeft);
if (computerMode == 0)
{
System.out.println ("The computer is in smart mode");
}
if (computerMode == 1)
{
System.out.println ("The computer is in dumb mode");
}
while (numberLeft > 1)
{
if (turn == true)
{
System.out.println ("It is your turn...");
System.out.printf ("Please enter the number you wish to take from the pile (Remember it has to be less than " + numberLeft/2 + "): ");
subtraction = in.nextInt();
numberLeft -=subtraction;
System.out.println ("The number left is " + numberLeft);
turn = false;
}
if (turn ==false)
{
System.out.println ("It is the computer's turn...");
if (computerMode == 0)
{
numberLeft = smartComputer(numberLeft);
System.out.println ("The number left is " + numberLeft);
}
if (computerMode == 1)
{
numberLeft -= num.nextInt(numberLeft/2);
System.out.println ("The number left is " + numberLeft);
}
turn = true;
return;
}
}
if (numberLeft <= 1)
{
if (turn = false)
{
System.out.println ("You Win!");
}
else
{
System.out.println ("You're horrible...you lost to a computer.");
}
}
}
public static int smartComputer (int num)
{
int power = 2;
while (power < num)
{
power *=2;
}
power /= 2;
num = power-1;
return num;
}
}
解決方法は?
からの ドキュメント のRandomを使用しています。
0(包含)と指定された値(排他的)の間で一様に分布する擬似ランダムなint値を返します。
Exclusive"とは、次のような意味です。
nextInt(n)
である可能性のある整数を返します。
n-1
しかし
ない
である
n
.
nextInt(n)
があります。
n
0を含むさまざまな結果が考えられます。
簡単な修正方法は、それを
nextInt(2)
2つのモードがあるためです。
関連
-
[解決済み】"実引数リストと形式引数リストの長さが異なる"
-
[解決済み】エラー。Selection does not contain a main type
-
[解決済み] 解決済み】Javaが「型をインスタンス化できない」というエラーを返す [重複] [重複]
-
[解決済み] for'ループでインデックスにアクセスする?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaScriptのオブジェクトをループスルーまたは列挙するにはどうすればよいですか?
-
[解決済み] Bashでファイルの中身をループする
-
[解決済み] オブジェクトをメンバーとして、プレーンなJavaScriptオブジェクトをループさせる方法
-
[解決済み] Javaの「for each」ループはどのように機能するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Android Studio クラス org.codehaus.groovy.runtime.InvokerHelper を初期化できませんでした。
-
[解決済み】javaで指定されたファイルが見つからない
-
[解決済み】popBackStack()とreplace()の操作はどう違うのですか?
-
[解決済み】"比較メソッドはその一般契約に違反する!"
-
[解決済み] 二項演算子「&」のオペランド型がおかしい java
-
[解決済み】「error: '.class' expected」の意味と修正方法について
-
[解決済み】Hibernateの例外「failed to lazily initialize a collection of role」の解決方法
-
[解決済み】破損したjarファイル
-
[解決済み] StringBuilderをクリアまたは空にするにはどうすればよいですか?重複] [重複] [重複] [重複] [重複] [重複
-
[解決済み】Javaの".class expected "について