2015-02-24 55 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

相关问题