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