我的班看起来像这样:
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"
记住我是一名学生,学术诚信对我来说很重要,为什么我会收到这样的错误呢?还有,有什么建议可以提高我的编码效率在未来吗?谢谢你付出的时间和努力。这是非常感谢的。
发布于 2013-02-21 16:40:25
方法1:
您可以通过这样的静态处理来解决您的问题:
public static String getName()
{
return "" + monthNum;
}
你打电话应该是
System.out.println("Month number " + monthNum + " is the month of " + Month.getName());
方法2:
创建class Month
对象,然后:
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.println("Enter month number: ");
int monthNum = in.nextInt();
Month obj=new Month();
System.out.println("Month number " + monthNum + " is the month of " + obj.getName());
}
发布于 2013-02-21 16:41:02
首先,如果您想要访问类的方法(在您的情况下是月份),而不首先实例化类本身,而是直接使用Month.getName(),那么必须将该方法定义为静态的。
关于何时在类中使用静态或非静态方法,您可以在网上找到这么多的文章来填充库:-)
关于上面的代码的另一个小注释。与使用开关不同,您可能对使用枚举感兴趣。
发布于 2013-02-21 16:45:52
您的代码看起来有点粗糙和混乱。我建议使用:
public static String getMonthNameForNum(int monthNum) {
switch (monthNum) {
case 1:
return "January";
case 2:
return "February";
case 3:
return "March";
case 4:
return "April";
case 5:
return "May";
case 6:
return "June";
case 7:
return "July";
case 8:
return "August";
case 9:
return "September";
case 10:
return "October";
case 11:
return "November";
case 12:
return "December";
default:
return "UNKNOWN";
}
}
然后用它就像:
System.out.println("Month number " + monthNum + " is the month of " + Month.getMonthNameForNum(monthNum));
当然,这应该只是教育代码,在现实生活中,你会使用标准日历等来获取月份名称!
https://stackoverflow.com/questions/15007456
复制相似问题