我已经从 python 转向 java,所以仍在习惯 OOP。我尝试制作一个可以生成 2 个随机数的游戏,用户必须将它们加在一起。
但是,当我运行游戏时,我收到意外的错误代码:
线程“main”中的异常 java.lang.NoSuchMethodError: 'void 游戏.playGame()' 在additionGame.main(additionGame.java:8)
我在下面添加了我的代码:
import java.util.Scanner;
import java.util.Random;
public class AdditionGame {
public static void main(String[] args){
Game gameObject = new Game();
gameObject.playGame();
}
}
class Game {
int score = 0;
public int generateNumber(){
int number;
Random random = new Random();
number = random.nextInt(20)+1;
return number;
}
public void playGame(){
int i = 0;
while (i<10){
int number1;
int number2;
int answer;
String userAnswerSTR;
int userAnswer;
i++;
number1 = generateNumber();
number2 = generateNumber();
answer = number1 + number2;
System.out.println("What is " + number1 + "+" + number2 + " :");
Scanner scannerObject = new Scanner(System.in);
userAnswerSTR = scannerObject.nextLine();
scannerObject.close();
userAnswer = Integer.parseInt(userAnswerSTR);
if (userAnswer == answer){
System.out.println("Correct Answer!");
score ++;
}
else {
System.out.println("Incorrect! The answer was: " + answer);
}
}
System.out.println("Congratulations! Your score was: " + score);
}
}
我预计游戏会运行 10 轮然后打印用户得分
这是您可以尝试的方法:
我预计游戏会运行 10 轮然后打印用户得分
import java.util.Random;
import java.util.Scanner;
public class AdditionGame {
public static void main(String[] args) {
Game game = new Game();
game.playGame();
}
}
class Game {
int score = 0;
public int generateNumber() {
Random random = new Random();
return random.nextInt(20) + 1;
}
public void playGame() {
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < 10; i++) {
int number1 = generateNumber();
int number2 = generateNumber();
int answer = number1 + number2;
System.out.print("What is " + number1 + " + " + number2 + " : ");
int userAnswer = scanner.nextInt();
if (userAnswer == answer) {
System.out.println("Correct Answer!");
score++;
} else {
System.out.println("Incorrect! The answer was: " + answer);
}
}
System.out.println("Congratulations! Your score was: " + score);
scanner.close();
}
}