您好我有这个问题我在主函数中收到此错误:“无法从静态上下文引用非静态方法”所有调用的方法都带有此错误的下划线。我已经尝试了一些事情,但我找不到克服它的方法,它让我陷入困境。有没有办法可以摆脱这个错误?谢谢这里是代码:
import java.util.Scanner;
public class Survey {
int age;
char gender;
char show;
int over30MY = 0, over30FY = 0, under30MY = 0, under30FY = 0;
int over30MN = 0, over30FN = 0, under30MN = 0, under30FN = 0;
int totalCalls;
int totalWatchers;
float perTotalWatchers;
float perU30M, perU30F, perO30M, perO30F, perTotalF, perTotalM;
float perTotalU30, perTotalO30, perTotal;
public static void main(String[] args) {
System.out.println("Thank you for your call,\nPlease take some time to answer a few questions");
Info();
collectData();
getTotals();
printTotals();
}//end of main
public void Info() { //Prints student Info
System.out.println("");
System.out.println("");
System.out.println("");
System.out.println("");
System.out.println("");
}
public void collectData() {
Scanner userInput = new Scanner(System.in); //Does everything
//ask questions
System.out.println("What is your age?\n");
age = userInput.nextInt();
System.out.println("Male or Female (Enter M or Y)");
gender = userInput.next().charAt(0);
gender = Character.toLowerCase(gender);
System.out.println("Do you watch the show regularly? (Enter Y or N)");
show = userInput.next().charAt(0);
show = Character.toLowerCase(show);
//store data
if((age > 30) && (gender == 'm') && (show == 'y')) {
over30MY++;
}
else if((age > 30) && (gender == 'f') && (show == 'y')) {
over30FY++;
}
else if((age < 30) && (gender == 'm') && (show == 'y')) {
under30MY++;
}
else if((age < 30) && (gender == 'f') && (show == 'y')) {
under30FY++;
}
else if((age > 30) && (gender == 'm') && (show == 'n')) {
over30MN++;
}
else if((age > 30) && (gender == 'f') && (show == 'n')) {
over30FN++;
}
else if((age < 30) && (gender == 'm') && (show == 'n')) {
under30MN++;
}
else if((age < 30) && (gender == 'f') && (show == 'n')) {
under30FN++;
}//end of if else
}//end of collectData
public void getTotals() {//calculate totals for printing
totalCalls = over30MY + over30FY + under30MY + under30FY + over30MN + over30FN + under30MN + under30FN;
totalWatchers = over30MY + over30FY + under30MY + under30MN;
perTotalWatchers = Math.round(totalWatchers / totalCalls); //rounds percentage to nearest whole number
perU30F = Math.round(under30FY / totalWatchers); //Total Under 30 Females
perU30M = Math.round(under30MY / totalWatchers); //Total Under 30 Males
perO30F = Math.round(over30FY / totalWatchers); //Total Over 30 Females
perO30M = Math.round(over30MY / totalWatchers); //Total Over 30 Males
perTotalF = Math.round(perU30F + perO30F); //Total Females
perTotalM = Math.round(perU30M + perO30M); //Total Males
perTotalU30 = Math.round(perU30F + perU30M); //Total Under 30
perTotalO30 = Math.round(perO30F + perO30M); //Total Over 30
perTotal = Math.round(perTotalF + perTotalM); //Total
}//end of getTotals
public void printTotals () { //Prints the Totals
System.out.println("Total People called is "+totalCalls);
System.out.println("Number of people who watch the show regularly is "+totalWatchers);
System.out.println("Percentage of those who watch the show is "+perTotalWatchers);
System.out.println("");
System.out.println("");
}//end of printTotals
}// end of class