看起来你的括号不打开和正常关闭。此外,userScore和totalScore在每次迭代中都会重置。所以你不会有正确的分数。将它移到循环之外。
import java.util.Scanner;
public class Multiplication {
private static String question;
private static Scanner input;
private static Scanner scanner;
private static int totalScore;
private static int answer1;
private static int userScore;
public static void main(String[] args) {
int number1;
int number2;
totalScore = 0;
userScore = 0;
input = new Scanner(System.in);
do {
number1 = (int)(Math.random() * 10);
number2 = (int)(Math.random() * 10);
System.out.print("What is " + number1 + " * " + number2 + "? ");
int answer = input.nextInt();
while (number1 * number2 != answer)
{
int answer1 = number1 * number2;
System.out.println("Incorrect. The answer is " + answer1+".");
System.out.print("Want more questions yes or no? ");
scanner = new Scanner (System.in);
question = scanner.next();
totalScore++;
break;
}
if (number1 * number2 == answer)
{
System.out.println("Correct. Nice work!");
System.out.print("Want more questions yes or no? ");
scanner = new Scanner (System.in);
question = scanner.next();
userScore++;
totalScore++;
}
}while(question.equals("yes") || question.equals("y"));
System.out.println("You have this many questions correct:" + userScore +" out of " + totalScore);
}
}
更好地实施
代码看起来这里更具可读性和代码的几个不必要的行被删除。
import java.util.Scanner;
public class Multiplication {
private static final Scanner scanner = new Scanner (System.in);
private static int totalScore = 0;
private static int userScore = 0;
private static int number1;
private static int number2;
private static int answer;
public static boolean continueExe(){
String question;
System.out.print("Want more questions yes or no? ");
question = scanner.next();
return (question.equals("yes") || question.equals("y"));
}
public static void printOutput(){
System.out.println("You have this many questions correct:" + userScore +" out of " + totalScore);
}
public static void askQuestion(){
number1 = (int)(Math.random() * 10);
number2 = (int)(Math.random() * 10);
System.out.print("What is " + number1 + " * " + number2 + "? ");
}
public static void readAnswer(){
answer = scanner.nextInt();
}
public static void isAnswerCorrect(){
if (number1 * number2 != answer){
System.out.println("Incorrect. The answer is " + number1 * number2 +".");
}else{
userScore++;
System.out.println("Correct. Nice work!");
}
totalScore++;
}
public static void main(String[] args) {
do{
askQuestion();
readAnswer();
isAnswerCorrect();
}while(continueExe());
printOutput();
}
}
一个主要问题:不守重新创建while循环中的扫描仪。您将扫描仪基于System.in,并且您不希望它结束,直到程序完成并不再需要此输入。因此,在您的while循环之前,只能使扫描仪一次**。 –
我有一个deja弱点吗?那天我不是几乎同样的问题吗?它发生了关闭和删除,现在你再试一次? – GhostCat
感谢您的回答。我确实有这种倾向。我会看看我是否可以修改。 @气垫船。 –