错误找不到函数名称的符号

时间:2014-06-03 01:24:06

标签: java

我的代码中有一小段问题,我从早上起就遇到过这个特殊的代码,所以我可能有些愚蠢。基本上它将数组的索引与另一个类中的另一个数字进行比较,这是代码和错误。

private static int encontrarCanal(int pbuscarCanal){

        int channelFound = -1;

        for(int i=0; i<numCanales; i++){
            if(canales[i].getCanal() == pbuscarCanal){
                channelFound = i;
                i = numCanales;
            }
        }

        return channelFound;
    }

在另一堂课中,我有一个简单的:

 public int getCanal(){
     return canal;

 }   

错误:

error: cannot find symbol
            if(canales[i].getCanal(i) == pbuscarCanal){
                         ^
  symbol:   method getCanal()
  location: class String
1 error

我只需要补丁即可完成,所以任何帮助都会受到高度赞赏。

编辑:

String Array canales声明:

static String[] canales = {"Channel1","Channel2","Channe3","Channel4"};

尝试做:

static ArrayList<String> channel = new ArrayList<String>(Arrays.asList(canales));

但它给出了一个错误:

  error: cannot find symbol
static ArrayList<String> channel = new ArrayList<String>(Arrays.asList(canales));

2 个答案:

答案 0 :(得分:2)

symbol:   method getCanal()
location: class String

您的问题无法比此消息更明确地表达:String类没有名为getCanal()的方法,canales[i]是一个字符串,如根据您的声明:static String[] canales = ...

为了响应您的更新,ArrayList<String>也是String个对象的列表,因此调用yourList.get(i).getCanal()与您之前的操作没有什么不同。您的问题不是您正在使用的数据结构,而是您存储在其中的数据结构 - 字符串。

如果包含getCanal()方法的类被称为Foo,则以下任何一个都将编译:

  Foo[] canales = {...}
  ...
  canales[i].getCanal();

 //or: 
 ArrayList<Foo> canales = new ArrayList<>();
 ...add Foo objects 
 canales.get(i).getCanal();

会奏效。请注意List<String>List<Foo>之间的差异,并阅读generics

在回复你的评论时,如果你想使用/引用另一个类的一个类,你需要a)将它们放在同一个package中,或者b)通过放置一个类将它们导入到另一个类中。后者顶部的import声明,如下:

 package yourpackage;
 import otherpackage.Foo;
 //other imports...
 class ClassThatUsesFoo { 

我不知道你之前的“类似情况”是什么,但是学习类/包如何相互交互是学习Java的一个非常基础和重要的步骤。 This将是一个很好的起点。

答案 1 :(得分:0)

如果没有canales []的声明,很难肯定地说,但是你似乎试图在字符串对象上调用getCanal()。