当学生答对问题时,程序会提出另一个随机问题。但是当学生答错问题时,它仍然会问他们一个新问题。我想改变它,这样当学生做错问题时,它会再次问他们同样的问题,直到他们做对为止。请帮忙,非常感谢!
import java.util.Random;
import java.util.Scanner;
public class Multiplication {
static Random random = new Random();
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int correctCtr =0;
int wrongCtr = 0;
System.out.println("Welcome to the CAI-Knowledge Assessment\n ");
int type = getProblemType(scanner);
System.out.print("Enter difficulty level: ");
int difficulty = scanner.nextInt();
while (true) {
int questionAns = getQuestion(type, difficulty);
int answer = scanner.nextInt();
if (questionAns != answer) {
System.out.println(getWrongResponse());
wrongCtr++;
} else {
System.out.println(getCorrectResponse());
correctCtr++;
}
if ((wrongCtr + correctCtr) == 10) {
double correctness = (correctCtr / 10.0) * 100;
if (correctness > 75) {
System.out.println("Congratulations, you are ready to go to the next level!");
} else {
System.out.println("Please ask your teacher for extra help.");
}
wrongCtr = 0;
correctCtr = 0;
while (true) {
System.out.print("Try again? Y or any other character to exit:");
String response = scanner.next();
if (response.equalsIgnoreCase("y")) {
type = getProblemType(scanner);
System.out.print("Enter difficulty level: ");
difficulty = scanner.nextInt();
break;
} else {
System.out.println("Thank you for learning!");
System.exit(0);
}
}
}
}
}
static int getProblemType(Scanner scanner) {
int type;
while (true) {
System.out.print("What type of problem would you like? \n(1=addition, 2=subtraction, 3=multiplication, 4=division, 5=mixture): ");
type = scanner.nextInt();
if (type > 0 && type < 6) {
break;
} else {
System.out.println("Invalid type!");
}
}
return type;
}
static String getCorrectResponse() {
String response = null;
int index = random.nextInt(4);
switch (index) {
case 0:
response = "Very good!";
break;
case 1:
response = "Excellent!";
break;
case 2:
response = "Nice work!";
break;
case 3:
response = "Keep up the good work!";
break;
}
return response;
}
static String getWrongResponse() {
String response = null;
int index = random.nextInt(4);
switch (index) {
case 0:
response = "No. Please try again.";
break;
case 1:
response = "Wrong. Try once more.";
break;
case 2:
response = "Don't give up!";
break;
case 3:
response = "No. Keep trying.";
break;
}
return response;
}
static int getQuestion(int type, int difficulty) {
int no1 = random.nextInt((int)Math.pow(10, difficulty));
int no2 = random.nextInt((int)Math.pow(10, difficulty));
int returnVal = 0;
if (type == 1) {
System.out.printf("How much is %d plus %d? ",no1,no2);
returnVal = no1 + no2;
} else if (type == 2) {
while (no2 > no1) {
no2 = random.nextInt((int)Math.pow(10, difficulty));
}
System.out.printf("How much is %d minus %d? ",no1,no2);
returnVal = no1 - no2;
} else if (type == 3) {
System.out.printf("How much is %d times %d? ",no1,no2);
returnVal = no1 * no2;
} else if (type == 4) {
while (no2 == 0 || no2 > no1 || no1%no2!=0) {
no2 = random.nextInt((int)Math.pow(10, difficulty));
}
System.out.printf("How much is %d divided by %d? ",no1,no2);
returnVal = no1 * no2;
} else if (type == 5) {
returnVal = getQuestion(random.nextInt(5)+1, difficulty);
}
return returnVal;
}
}