2011-03-08 69 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