这是我的代码:
public class Point3D {
public static void main(String args[]) {
int x=setX(x);
System.out.println(x);
}
int x=1;
public int setX(int x) {
this.x=x;
}
}
编译器(cmd)显示以下错误:
Point3D.java:5: error: non-static method setX(int) cannot be referenced from
static context int x=setX(x);
^
1 error
有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
<强> 1)强>
public int setX(int x) {
this.x=x;
}
该方法需要返回一个int值。你没有退货。
public int setX(int x) {
this.x=x;
return this.x;
}
我的建议:
从setter返回一个值,提供getter并从那里获取x值是非常困惑的。
<强> 2)强>
由于方法setX不是静态方法,因此无法在静态上下文中访问它。因此,您需要将该方法设置为静态,或者必须创建该类的实例以访问该方法。
public class Point3D {
int x=1;
public static void main(String args[]) {
Point3D p = new Point3D();
p.setX(1);
int x=p.getX();
System.out.println(x);
}
public void setX(int x) {
this.x=x;
}
public int getX() {
return this.x;
}
}
答案 1 :(得分:1)
首先,必须在实例上调用setX()
。使用new Point3D()
创建班级实例。
其次,非void方法必须返回一个值。 setX()
被声明为返回int
,但它没有。
答案 2 :(得分:0)
生成吸毒者和定位者,如下所示:
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}