显示java.lang.NullPointerException;试图创建一个对象并调用一些方法

时间:2014-10-11 01:13:16

标签: java object

我正在尝试创建一个包含3个变量的对象,并且能够通过两种不同的方法运行它。这是我的目标。基于三个变量a,b和c,它保持线ax + + + c = 0的值。

public class APLine {

  private double a;
  private double b;
  private double c;

  //this method returns the slope of the line
  public double getSlope() { 
    double slope = (-a/b);
    return slope;
  }

  //this method checks to see if the line crosses the given point
  public boolean isOnLine(double x, double y) {
    if (a*x + b*y + c == 0) {
      return true;
    } else {
      return false;
    }
  }

  //constructor
  public APLine(double a, double b, double c) {
  }
}

这是我为尝试我的方法而创建的测试类。编译任何一个课都没有问题。

public class linetest {
  public void main (String[] args) {
    APLine l = new APLine(3, 5, 4.5);
    System.out.println(l.getSlope());
    System.out.println(l.isOnLine(0, 0));
    System.out.println(l.isOnLine(0, (-4.5/3)));
  }
}

我得到的错误是:

java.lang.NullPointerException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)

有人可以解释我做错了吗?

1 个答案:

答案 0 :(得分:1)

您的主要方法签名不正确,应始终如下:

<强> public static void main(String[] args) { ... }

此外,您的APLine构造函数不会对您传递的参数执行任何操作。您应该将实例变量分配给这些参数:

public APLine(double a, double b, double c) {
    this.a = a;
    this.b = b; 
    this.c = c;
}