2014-11-21 100 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了。