Java 错误:找不到函数名的符号

Java 错误:找不到函数名的符号,java,Java,我的代码中有一小部分有点问题,我从早上开始就在使用这个特殊的代码,所以我可能有点傻。基本上,它将数组的索引与另一个类中的另一个数字进行比较,这就是代码和错误 private static int encontrarCanal(int pbuscarCanal){ int channelFound = -1; for(int i=0; i<numCanales; i++){ if(canales[i].getCanal() == p

我的代码中有一小部分有点问题,我从早上开始就在使用这个特殊的代码,所以我可能有点傻。基本上,它将数组的索引与另一个类中的另一个数字进行比较,这就是代码和错误

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;
    }
错误是:

error: cannot find symbol
            if(canales[i].getCanal(i) == pbuscarCanal){
                         ^
  symbol:   method getCanal()
  location: class String
1 error
我只需要修补一下就可以了,所以任何帮助都将不胜感激

编辑:

字符串数组通道的声明:

static String[] canales = {"Channel1","Channel2","Channe3","Channel4"};
尝试做:

static ArrayList<String> channel = new ArrayList<String>(Arrays.asList(canales));
staticarraylistchannel=newarraylist(Arrays.asList(canales));
但它给出了一个错误:

  error: cannot find symbol
static ArrayList<String> channel = new ArrayList<String>(Arrays.asList(canales));
错误:找不到符号
静态ArrayList通道=新的ArrayList(Arrays.asList(canales));

如果没有canales[]的声明,很难说清楚,但似乎您正在尝试对string对象调用getCanal()

symbol:   method getCanal()
location: class String
您的问题在这条消息中表达得再清楚不过了:
String
类没有名为
getCanal()
的方法,
canales[i]
是一个字符串,正如您声明的那样:
static String[]canales=…

作为对更新的响应,
ArrayList
也是一个
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();

我不知道您之前的“类似情况”是什么,但是学习类/包之间如何交互是学习Java的一个非常基本和重要的步骤。这是一个很好的开始

您可能需要向类强制转换
canales[i]
,以便该方法在该范围内可见。例如,
((YourClass)运河[I]).getCanal()canales的声明在哪里?你对canales的定义是什么,它是一个字符串列表?@blurfus它不起作用…@andy添加了声明。添加了有关编辑的信息。但是getCanal()在另一个类(文件)中,在前面的类似问题中,这样做对我很有效。
  Foo[] canales = {...}
  ...
  canales[i].getCanal();

 //or: 
 ArrayList<Foo> canales = new ArrayList<>();
 ...add Foo objects 
 canales.get(i).getCanal();
 package yourpackage;
 import otherpackage.Foo;
 //other imports...
 class ClassThatUsesFoo {