2011-03-08 75 views
-1

您是否在此代码中看到任何错误?在没有效果的情况下,它会返回一个NaN。它使用了Java:算术

public class Method2 extends GUIct1 
{ 
double x=0,y=0; 


void settype1 (double conv1) 
{ 
x = conv1; 
} 

void settype2 (double conv2) 
{ 
y = conv2; 
} 

double conversion (double amount) 
{ 


double converted = (amount*y)/x; 
    return converted; 
} 

} 

办法,我已经改变了设置部位

Method2 convert = new Method2(); \\ method is called 

.....

convert.settype1(j); 

.....

​​

。 ...

double x = convert.conversion(i); 
System.out.println(x); 
+1

您的get方法应该被命名为set。 – unholysampler 2011-03-08 19:05:47

+0

代码片段不完整。请更新它。 – asgs 2011-03-08 19:05:51

+1

您正在初始化'x',用'x'分隔的类中的0 - 您期望会发生什么?这就像留下燃料和火柴,希望没有人一起使用它们) – schnaader 2011-03-08 19:06:33

回答

7

嗯,事实上,你有方法,其设置变量叫get -something很显然不是一个好主意,而且也没有缩进......但应该工作。但是,然后,你还没有显示你如何使用它。也许你实际上没有被称为setter方法?

下面是相同的代码,但名称不同的实例,并使用它的一个样本:

class Converter 
{ 
    double multiplier = 0; 
    double divisor = 0; 


    void setMultiplier(double multiplier) 
    { 
     this.multiplier = multiplier; 
    } 

    void setDivisor(double divisor) 
    { 
     this.divisor = divisor; 
    } 

    double convert(double amount) 
    { 
     return (amount * multiplier)/divisor; 
    } 
} 

public class Test 
{ 
    public static void main(String[] args) 
    { 
     Converter converter = new Converter(); 
     converter.setMultiplier(3.5); 
     converter.setDivisor(8.5); 
     System.out.println(converter.convert(2)); // Prints 0.8235294117647058 
    } 
} 

个人而言,我很可能使变量最终并设置他们在构造函数中,但这是另一回事...

1

它看起来并不像你曾经打电话gettype1或gettype2所以X/Y是0/0,得到NaN

+0

那么我们还没有看到任何调用'转换'的代码,所以我们不能真正知道发生了什么... – 2011-03-08 19:09:23

0

就会发生这种情况时,X = 0。按零划分未定义。打印出x和y,然后开始计算以查看它们是否不为零。

+0

我试过了,没有,直到那一点一切工作正常我猜 – 2011-03-08 19:13:25