![](/img/trans.png)
[英]How to return value from method without executing code using mockito
[英]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
的代码放在将在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
}
您应该熟悉类变量。 在类的顶部,您可以声明一个变量并给它一个值。 如果要从类中的其他方法访问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.