Java 从主方法重新运行主方法
基本上,我需要为这个数学测验做的最后一件事是编程,我必须询问用户是否愿意回答更多的问题,如果愿意,重新运行Main方法中的所有内容。如果没有,打印再见。否定很容易,但我不确定如果他们说是,如何告诉它重新运行主方法。下面是我的main方法中的代码Java 从主方法重新运行主方法,java,netbeans,Java,Netbeans,基本上,我需要为这个数学测验做的最后一件事是编程,我必须询问用户是否愿意回答更多的问题,如果愿意,重新运行Main方法中的所有内容。如果没有,打印再见。否定很容易,但我不确定如果他们说是,如何告诉它重新运行主方法。下面是我的main方法中的代码 public static void main(String[] args) { Scanner in = new Scanner(System.in); int digit = 0; String result1 = ge
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int digit = 0;
String result1 = getUserChoice("");
digit = getNumberofDigit1(digit);
int numberOfProblems = amountOfProblems();
for (int i = 0; i < numberOfProblems; i++) {
int number1 = getRandomNumber1(digit);
int number2 = getRandomNumber2(digit);
System.out.println("Enter your answer to the following problem: \n" +
number1 + result1 + number2);
int correctAnswer = getCorrectAnswer(number1, result1, number2);
int userAnswer = getUserAnswer();
CheckandDisplayResult(correctAnswer, userAnswer);
}
System.out.println("Would you like to solve more probelms(Y/N)? ");
String moreProblems = in.next();
if ("Y".equals(moreProblems)){
digit = 0;
result1 = getUserChoice("");
digit = getNumberofDigit1(digit);
numberOfProblems = amountOfProblems();
for (int i = 0; i < numberOfProblems; i++) {
int number1 = getRandomNumber1(digit);
int number2 = getRandomNumber2(digit);
System.out.println("Enter your answer to the following problem: \n" +
number1 + result1 + number2);
int correctAnswer = getCorrectAnswer(number1, result1, number2);
int userAnswer = getUserAnswer();
CheckandDisplayResult(correctAnswer, userAnswer);
}
System.out.println("Would you like to solve more probelms(Y/N)? ");
moreProblems = in.next();
if ("Y".equals(moreProblems)){
}
System.out.println("Thank you for taking this quiz, Goodbye!");
}
现在我试过这样的方法
如果Y.EqualsMore问题{
复制并通过主方法
}
但这有一个错误,那就是需要无限循环,因为如果是的话,你必须在每个if中都有更多的problems语句,这意味着它永远不会停止编码,你将永远保持复制和粘贴。你可以做的是将main中的所有内容移动到另一个静态方法中,称之为interact。然后,在主要方面,只要用户想与您的程序交互,就需要调用interactive的逻辑。换句话说,把数学测验放在一种方法中,把呈现测验的业务放在主要方法中。如果需要,您的程序将更易于阅读和进一步修改。您可以在while循环中包含所有要重新运行的代码:
boolean run = true;
while (run) {
// Here your code
// Here input if user want to re-run
if (getUserChoice("").equals("NO"))
run = false;
}
boolean more = false;
do {
// all your code
more = "Y".equals(moreProblems);
} while (more);
将所有内容放在一个大的do while循环中:
boolean run = true;
while (run) {
// Here your code
// Here input if user want to re-run
if (getUserChoice("").equals("NO"))
run = false;
}
boolean more = false;
do {
// all your code
more = "Y".equals(moreProblems);
} while (more);
或者,如果您的扫描仪在循环之外声明,您可以:
do {
// all your code
} while ("Y".equals(in.next()));
与其他人的建议不同,这是我更喜欢的方法:
while(true) {
//do all your stuff
if(/*some exit condition*/) { break; }
}
我想这个原型可能会对你有所帮助
import java.util.Scanner;
public class MathsClass {
public static void main(String[] args){
MathsClass object = new MathsClass();
while(object.response())
object.mathsQuiz();
}
public void mathsQuiz(){
//your quiz functionalities
System.out.println("Add two nos");
}
public boolean response(){
System.out.println("Would u like to solve more problems? ");
Scanner scanner = new Scanner(System.in);
boolean response = scanner.nextBoolean();
return response;
}
}
我考虑过这个问题,但是作业中说所有方法都必须从主方法调用,所以测验必须留在主方法部分。那么,按照其他人的建议,进行while循环。有人能告诉我为什么我得到了否决票吗?