我刚刚开始用Java编程,我遇到了一个我似乎无法弄清楚的问题。
我的程序是用(n)面滚动模具,其中(n)由用户指定。然后程序将滚动的结果作为整数打印,滚动的面值作为整数(这似乎与滚动的结果相同),并且滚动的结果作为字符串。最后两种方法(面值和字符串)是与掷骰子不同的方法,但仍然是必需的。
我的问题是,虽然代码编译,但方法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());
}
}
我非常感谢您提供的任何帮助。
答案 0 :(得分:3)
我看到的第一个问题是你正在创建你的Die类的三个实例,这意味着任何生成的值都不会影响其他的......
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
方法,看作是你实际问的问题,但那只是我
答案 1 :(得分: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());
}
这将创建一个骰子,然后滚动它并查看其值。它将为所有三个方法调用显示相同的值。