繁体   English   中英

返回值执行方法?

[英]Return value executing a method?

 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); } } 

因此,这只是我程序的一小部分,而我遇到的问题是我最初的numGuesses int numGuesses = game(console, r);int numGuesses = game(console, r); )正在执行以下所示的game方法。 我想从game方法中获得的只是numGuesses的返回值,这样我就可以将该值转发到另一个名为stats(numGames,numGuesses,max)的方法中。 我如何使初始值不执行该方法而仅执行do / while循环? 我生成return语句的方式是否错误? 另外,我的返回值没有保存在stats方法中,因此当我运行它时,会得到错误的答案。

然后,应将负责生成numGuesses的代码放在将在maingame上使用的另一种方法中,例如:

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 
}

您应该熟悉类变量。 在类的顶部,您可以声明一个变量并给它一个值。 如果要从类中的其他方法访问numGuesses,则应该这样做。 这是Foobar示例:

class Foo {

    private int bar = 0;

    private void foobar(int arg) {...}

}

您只需要注意不要在方法中做int numGuesses numGuess,因为这会创建第二个局部变量。 可以仅通过名称访问类变量。


接下来,您要跟踪玩过的游戏总数和总猜测数。 您现在可以猜到(哈哈哈),您还需要使用类变量。 如果即使在重新启动程序时也需要跟踪总猜测,则需要将这些值存储在文件中,但这将是另一次。


最后,还有两件事。

1.)方法max 我不知道max应该做什么,但是目前它只是返回传递给它的值。 同样,if语句将永远不会执行(x不能大于x)。

2.)您也许应该考虑不要使所有内容都是静态的。 显然,它可以这样工作,但事实并非如此,即所谓的面向对象编程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM