java构造函数中的简单错误

时间:2011-10-20 15:57:02

标签: java

我无法理解我在这段代码中的错误,如果我写new Cosine();它会编译但是如果我写new Cosine(x);

就会失败
import java.lang.Object;
import java.lang.Math;

class Cosine {
    double Cosine (double x) {
    double result = Math.cos(Math.toRadians(x));
    return result;
  }
}

public class test {
     public static void main (String[] args){
     double x = 90;
     new Cosine(x);
  }
}   

8 个答案:

答案 0 :(得分:6)

您没有给Cosine一个带double的构造函数。试试这个:

class Cosine {

    public final double result; //field holding the result

    //constructor
    public Cosine (double x){
     result = Math.cos(Math.toRadians(x)); //compute the result
   }
}

public class test {
    public static void main (String[] args){
        double x = 90;
        double cosX = new Cosine(x).result;
    }
}

虽然这引发了一个问题,为什么不能使用简单的静态方法:

public static double getCosine(double x) {
    return Math.cos(Math.toRadians(x));
}

public class test {
    public static void main (String[] args){
        double x = 90;
        double cosX = getCosine(x);
    }
}

这不需要为每次计算实例化Cosine对象。

答案 1 :(得分:1)

那是因为你还没有声明一个接受double的构造函数。您可以声明新的Cosine(),因为存在隐式的无参数构造函数。但是为了传递一个双倍,你必须明确地创建一个。

public Cosine(double x){
  ...
}

但是,如果您只想运行已编写的方法来获取余弦,则可以声明余弦对象,然后引用该方法。

Cosine cos=new Cosine();
cos.cosine(4.2);

答案 2 :(得分:1)

double Cosine (double x){

应该是

Cosine (double x){

因为构造函数没有返回值。

答案 3 :(得分:1)

java构造函数将是

public Cosine(double x){
 ...
}

答案 4 :(得分:1)

double Cosine(double x)不是构造函数。这是一种方法。构造函数没有返回类型。

所以请改用Cosine(double x)

答案 5 :(得分:1)

您没有任何构造函数将double作为参数

答案 6 :(得分:1)

您尚未为Cosine创建构造函数 - 因此编译器提供了一个默认的no-args构造函数。

double Cosine (double x){
double result = Math.cos(Math.toRadians(x));
return result;
  }

被解析为方法声明(我认为)。

答案 7 :(得分:0)

  

双余弦(双x){
      double result = Math.cos(Math.toRadians(x));
      返回结果;
  }

这不是构造函数。这是方法声明 这里

  

双余弦(双x){}

是方法声明 定义构造函数有一些规则如下:
它的名字和 它所在的类,在语法上与方法相似 2. 他们没有返回类型,甚至没有返回。
3.构造函数 在新运算符完成之前,在创建对象后立即自动调用。

与上述问题方法一样

  

Cousine(双x)

返回类型 double 打破第二条规则

我在我的机器上运行代码导致错误:

  

test.java:14:找不到符号
  符号:构造函数余弦(双)
  位置:类Cosine
          新余弦(x);
  ^
  1错误

这意味着程序中没有定义参数化构造函数。

<强>更新
添加构造函数

Cosine(double x){
   ....
   .....
}