我无法理解我在这段代码中的错误,如果我写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);
}
}
答案 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){
....
.....
}