import java.util.*;
public class Guess {
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
Random r = new Random();
intro();
int numGames = 0;
int numGuesses = game(console, r);
int max = max(numGuesses);
String again = "y";
do {
game(console, r);
System.out.println("Do you want to play again?");
again = console.next();
System.out.println();
numGames++;
} while (again.startsWith("y") || again.startsWith("Y"));
stats(numGames, numGuesses, max);
}
public static void intro() {...}
public static int game(Scanner console, Random r) {
System.out.println("I'm thinking of a number between 1 and 100...");
int answer = r.nextInt(100) + 1;
System.out.println("answer = " + answer);
int guess = -1;
int numGuesses = 0;
while (answer != guess) {
System.out.print("Your guess? ");
guess = console.nextInt();
numGuesses++;
if (guess > answer) {
System.out.println("It's lower.");
} else if (guess < answer) {
System.out.println("It's higher.");
} else {
System.out.println("You got it right in " + numGuesses + " guesses");
}
max(numGuesses);
}
return numGuesses;
}
public static int max(int numGuesses) {
int max = numGuesses;
if (max > numGuesses) {
max = numGuesses;
}
return max;
}
public static void stats(int numGames, int numGuesses, int max) {
System.out.println("Overall results:");
System.out.println(" total games = " + numGames);
System.out.println(" total guesses = " + numGuesses);
System.out.println(" guesses/game = " + numGuesses / numGames / 1.0);
System.out.println(" best game = " + max);
}
}
&#13;
所以这只是我程序的一小部分,而我遇到的问题是我的numGuesses(int numGuesses = game(console, r);
)的初始int正在执行下面显示的游戏方法。
我想从游戏方法中得到的只是numGuesses的返回值,这样我就可以将值转发到另一个名为stats的方法(numGames,numGuesses,max); 。如何使初始值不执行该方法只有do / while循环?
我生成return语句的方式是错误的吗?此外,我的返回值不能保存在我的统计数据方法中,所以当我运行它时,我得到了错误的答案。
答案 0 :(得分:0)
然后,您应该将负责生成numGuesses
的代码放在您将在main
和game
上使用的另一种方法中,例如:
public static int game(Scanner console, Random r) {
int numGuesses = getNumberOfGuesses(..);
//continue implementation here
}
public static void main(String[] args) {
int numGuesses = getNumberOfGuesses(..);
//use value
}
答案 1 :(得分:0)
你应该熟悉类变量。在类的顶部,您可以声明一个变量并为其赋值。如果您想从类中的不同方法访问它,那么您应该使用numGuesses。这是Foobar的例子:
class Foo {
private int bar = 0;
private void foobar(int arg) {...}
}
您只需要注意,您不会在方法中int numGuesses
创建第二个本地变量。只能通过名称访问类变量。
接下来,您要跟踪所玩的总游戏数和总猜测数。您现在可以猜测(哈哈哈),您也需要使用类变量。如果你需要跟踪总猜测,即使程序重新启动,你需要将这些值存储在一个文件中,但这将是另一次。
最后,还有两件小事。
1。)方法max
。我不知道max应该做什么,但目前它只是返回传递给它的值。 if语句也将从不执行(x不能高于x)。
2。)你应该考虑不要让一切都变得静止。它显然是这样的,但事实并非如此,所谓的面向对象编程。