我尝试使用不同的方法设置一个值,但是我遇到了编译器错误

时间:2013-12-29 13:05:23

标签: java

这是我的代码:

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

有人可以帮我解决这个问题吗?

3 个答案:

答案 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;
}