我想做一个数学测验,但我最近开始学习Java,遇到了一些麻烦。我已经读过关于访问方法和东西的文章,但我不明白所有这些应该如何帮助我。
import java.util.Scanner;
public class MatQui{
Scanner scan = new Scanner(System.in);
int correct = 0;
public static void main(String[] args) {
System.out.println("Enter your name: ");
String name = scan.nextLine();
System.out.println("Hello " + name + "! Answer the questions.");
firstQuiz();
}
public void firstQuiz() {
int randomNum1 = (int)(Math.random() * 101 +1);
int randomNum2 = (int)(Math.random() * 101 +1);
int RandomAddSolution = scan.nextInt();
int CorrectAddSolution = randomNum1 + randomNum2;
System.out.println(randomNum1 + " + " + randomNum2 + " = ?");
if (RandomAddSolution == CorrectAddSolution) {
System.out.println("Correct!");
correct++;
}
else if (RandomAddSolution != CorrectAddSolution) {
System.out.println("Wrong! The correct answer is: " + CorrectAddSolution);
}
secondQuiz();
}
public void secondQuiz() {
int randomNum1 = (int)(Math.random() * 101 +1);
int randomNum2 = (int)(Math.random() * 101 +1);
int RandomMinusSolution = scan.nextInt();
int CorrectMinusSolution = randomNum1 - randomNum2;
System.out.println(randomNum1 + " - " + randomNum2 + " = ?");
if (RandomMinusSolution == CorrectMinusSolution) {
System.out.println("Correct!");
correct++; //Ly Huong Van
}
else if (RandomMinusSolution != CorrectMinusSolution) {
System.out.println("Wrong! The correct answer is: " + CorrectMinusSolution);
}
thirdQuiz();
}
public void thirdQuiz() {
int randomNum1 = (int)(Math.random() * 11 +1);
int randomNum2 = (int)(Math.random() * 11 +1);
int RandomMulSolution = scan.nextInt();
int CorrectMulSolution = randomNum1 * randomNum2;
System.out.println(randomNum1 + " + " + randomNum2 + " = ?");
if (RandomMulSolution == CorrectMulSolution) {
System.out.println("Correct!");
correct++;
}
else if (RandomMulSolution != CorrectMulSolution) {
System.out.println("Wrong! The correct answer is: " + CorrectMulSolution);
}
fourthQuiz();
}
public void fourthQuiz() {
int randomNum1 = (int)(Math.random() * 101 +1);
int randomNum2 = (int)(Math.random() * 11 +1);
int RandomDivSolution = scan.nextInt();
int CorrectDivSolution = randomNum1 / randomNum2;
System.out.println(randomNum1 + " / " + randomNum2 + " = ?");
if (RandomDivSolution == CorrectDivSolution) {
System.out.println("Correct!");
correct++;
endingScreen();
}
else if (RandomDivSolution != CorrectDivSolution) {
System.out.println("Wrong! The correct answer is: " + CorrectDivSolution);
endingScreen();
}
}
public void endingScreen() {
int percentageCorrect = correct * 25;
System.out.println("You answered " + correct + " questions correctly.!n"
+ "That's " + percentageCorrect + "%!");
if (correct == 0) {
System.out.println(":(");
}
else if (correct != 0) {
System.out.println(":)");
}
}
我想从main访问"firstQuiz(("方法,但我收到错误,无法从static main访问非静态元素。我该如何使用它?
可以通过创建方法所在类的对象来访问非静态方法。
在本例中,您必须在main方法中创建类的对象,并使用该对象调用方法firstQuiz((。
正如tieburach所回答的。。。不能从静态方法访问非静态方法。您不能更改main方法签名,这意味着您可以使main非静态。Main将始终是静态的。
解决方案是使方法成为静态的,但如果不是您想要的,您也可以在main方法中创建另一个类和它的实例,然后调用该类上的方法。
您可以将方法设置为静态,也可以创建一个新的类实例并访问它,如下所示:
Test test = new Test();
test.yourMethod();
正如您可能注意到的,错误表明您无法从静态方法访问非静态方法。对您来说,最简单的解决方案是使您调用的方法也是静态的。
您需要创建一个新的MatQui matqui = new MatQui();
,并在调用带有新对象的方法后创建matqui.firstQuiz();