2014-11-21 69 views
0

编译时,出现找不到符号的错误 - 方法add(java.lang.String)。到目前为止,代码的目标只是为ArrayList添加新的风格。我正在使用BlueJ IDE,我知道这很奇怪!找不到符号方法

import java.util.ArrayList; 

public class IceCream 
{ 
    // stores ice cream flavours. 
    private ArrayList<String> flavours; 

    /** 
    * Constructor for objects of class IceCream 
    */ 
    public IceCream() 
    { 
     // initialise instance variables 
     flavours = new ArrayList<String>(); 
    } 

    /** 
    * Method to add a flavour to the list. 
    */ 
    public void newFlavour(String flavours) 
    { 
     flavours.add(flavours);   
    } 
} 
+3

你可能不应该在你的代码中使用'flavours'这个名字。 – Kayaman 2014-11-21 11:42:59

回答

2

您指定的字符串参数等于属性的名称(口味),因此编译器试图查找在String类的add()方法(这是不可用)。更改代码,如:

public void newFlavour(String flavours) 
{ 
    this.flavours.add(flavours);   
} 

或使用不同的名称。

1

看代码:

public void newFlavour(String flavours) 
{ 
    flavours.add(flavours);   
} 

参数flavoursshadowing你的领域flavours,所以编译器试图在String,不ArrayList找到一个add方法。你可能只是明确限定它(this.flavours.add(flavours)),但它会是更好地更改参数名称。毕竟,你不添加多种口味 - 只有一个......所以你的参数名称应反映:

public void newFlavour(String flavour) 
{ 
    flavours.add(flavour); 
} 

,并可能改变方法名addFlavour了。