看起來你的括號不打開和正常關閉。此外,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
感謝您的回答。我確實有這種傾向。我會看看我是否可以修改。 @氣墊船。 –