2015-02-24 27 views
-5

我使用ArrayList來存儲以下類爲什麼getValue總是返回0,即使我之前調用了setValue?

public class Variable extends Expression { 
String name; 
double value; 
boolean initialized=false; 

public Variable(String name){ 
this.name=name; 
} 



public void setValue(double value){ 
this.value=value; 
initialized=true; 
} 
public boolean isInitialized(){ 
return initialized; 
} 
public String getName(){ 
return name; 
} 
@Override 
public double getValue() { 
return this.value; 
} 

} 

的實例,我已經定義的數組列表如下所示:第一類不

static ArrayList<Variable> variables = new ArrayList<Variable>(); 

問題是setValue方法正常工作時,我嘗試使用get(指數)ArrayList類的方法,這樣設置一個變量實例的值字段:

variables.get(i).setValue(X); 

它總是SE無論X的值是多少(X是雙精度),都將值字段設置爲0。

什麼問題以及如何解決?謝謝。

+6

顯示完整代碼,請。 – 2015-02-24 00:23:19

+5

'setValue'不返回一個值('void')。它如何「返回0」? – 2015-02-24 00:24:07

+2

請參閱http://stackoverflow.com/help/mcve。並正確格式化。 – 2015-02-24 00:24:46

回答

1

這只是一個猜測,但我認爲你可能會使用Double而不是double。根據Java's documentation,Expression有一個名爲setValue的方法,它接受一個對象(如Double)。你已經聲明瞭一個名爲setValue的方法,其原型爲double,所以如果你正在使用Double表達式的方法被調用,而不是你創建的方法。

這裏的東西我在ideone輸入,以示我的意思:

/* package whatever; // don't place package name! */ 

import java.util.*; 
import java.lang.*; 
import java.io.*; 

/* Name of the class has to be "Main" only if the class is public. */ 
class Ideone 
{ 
    static double p = 12.5; 
    static Double o = new Double(12.5); 

    public static void main (String[] args) throws java.lang.Exception 
    { 
     runWithPrimitive(p); 
     runWithObject(o); 
    } 

    public static void runWithPrimitive(double x) { 
     System.out.println("primitive"); 
    } 

    public static void runWithObject(Object x) { 
     System.out.println("object"); 
    } 

} 

輸出是:

primitive 
object 

這裏試試:http://ideone.com/qo1JSX

相關問題