我的班级正在寻找这样的参考:非静态方法不能从静态上下文
public class Month
{
private int numOfMonth;
private int monthNum;
public int monthNum()
{
return monthNum = 1;
}
public void setMonthNum(int monthNum){
switch (monthNum)
{
case 1: System.out.println("January"); break;
case 2: System.out.println("February");break;
case 3: System.out.println("March");break;
case 4: System.out.println("April");break;
case 5: System.out.println("May");break;
case 6: System.out.println("June");break;
case 7: System.out.println("July");break;
case 8: System.out.println("August");break;
case 9: System.out.println("September");break;
case 10: System.out.println("October");break;
case 11: System.out.println("November");break;
case 12: System.out.println("December");break;
}
}
public String getName()
{
return "" + monthNum;
}
}
我的司机如下:
import java.util.Scanner;
public class monthDriver
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.println("Enter month number: ");
int monthNum = in.nextInt();
System.out.println("Month number " + monthNum + " is the month of " + Month.getName());
}
}
我得到的编译时错误:
"monthDriver.java:12: error: non-static method getName() cannot be referenced from a static context
System.out.println("Month number " + monthNum + " is the month of " + Month.getName());1 error"
请记住,我是一名学生,学术诚信对我很重要,为什么我会收到这样的错误?此外,是否有任何建议可以提高我未来的编码效率?感谢您的所有时间和精力。这是GREATLY赞赏。
'getName'是'Month'的*实例*方法。你还没有一个'Month'的实例来调用它。你应该在你用来学习Java的Java书或教程中查找'static',以了解静态成员和实例成员之间的区别。 – 2013-02-21 16:35:04
我看到学术诚信对你很重要,所以我不会用代码发表答案。但是你可能希望仔细看看你的setMonthNum方法,以确保它做你想做的事情。 – Scott 2013-02-21 16:45:19
谢谢@Scott帮助了一吨!我遇到了另一个问题,我将在= D处再次感谢! – WannaBeDroidProgrammer 2013-02-21 17:42:00