1

Javaでプログラミングを始めたばかりですが、理解できないような問題が発生しました。

私のプログラムは、(n)がユーザーによって指定された、(n)面のサイコロを振ることを目的としています。次に、プログラムはロールの結果を整数として、ロールの額面値を整数として(これはロールの結果と同じように見えます)、ロールの結果を文字列として出力します。最後の2つのメソッド(額面と文字列)はダイスロールとは別のメソッドですが、それでも必須です。

私の問題は、コードはコンパイルされますが、メソッドgetFaceValue()とtoString()は両方ともゼロを返すことです。私のコードは次のとおりです。

import java.io.*;
import java.util.*;

public class Die {

  private int z;
  private String faceName;

//sets (and returns) the face value to a uniform random number between 1 and the number of faces.
public int roll() {
    Scanner keyboard = new Scanner(System.in);
    int sides = keyboard.nextInt();
    double x = Math.random();
    double y = (x * sides) + 1;
    z = (int)y;
    return z;
}

//returns the current face value of the die.
public int getFaceValue() {
    int face = z;
    return face;
}

//returns the string representation of the face value.
public String toString() {
    faceName = Integer.toString(z);
    return faceName;
}

public static void main(String [] args) {

    System.out.println("How many sides will the die have?");
    System.out.println(" ");
    System.out.println("Roll: " + new Die().roll());
    System.out.println("Face: " + new Die().getFaceValue());
    System.out.println("String: " + new Die().toString());
}
}

私はあなたが提供できるどんな助けでも大いに感謝します。

4

2 に答える 2

3

私が目にする最初の問題は、Die クラスの 3 つのインスタンスを作成しているという事実です。つまり、生成された値は他の値に影響しません。

System.out.println("Roll: " + new Die().roll());
System.out.println("Face: " + new Die().getFaceValue());
System.out.println("String: " + new Die().toString());

読むべき

Die die = new Die();
System.out.println("Roll: " + die.roll());
System.out.println("Face: " + die.getFaceValue());
System.out.println("String: " + die.toString());

また、プロンプトSystem.out.println("How many sides will the die have?")rollメソッドに移動します。実際に質問しているのはそこにあると思われますが、それは私だけです

于 2012-09-26T04:34:46.133 に答える
0

を呼び出すたびnew Die()に、最後のサイコロとは独立した新しいサイコロを作成しています。つまり、サイコロを作って転がし、別のサイコロを作って値を見ています。まだロールしていないので、デフォルト値の のままで0、それが出力されます。次のように、転がしてから見るのと同じサイコロが必要です。

public static void main(String [] args) {
    Die die = new Die();
    System.out.println("How many sides will the die have?");
    System.out.println(" ");
    System.out.println("Roll: " + die.roll());
    System.out.println("Face: " + die.getFaceValue());
    System.out.println("String: " + die.toString());
}

これによりサイコロが作成され、それを転がしてその値を確認します。3 つのメソッド呼び出しすべてで同じ値が表示されます。

于 2012-09-26T04:37:33.143 に答える