我正在为我的课程完成作业。我被要求创建一个有效的索引方法,检查输入的int是否是我的ArrayList的有效索引。这个方法编译得很好,工作正常。
进一步的练习让我在其他方法中使用这个validIndex方法。我试图在我的removeFile方法中做到这一点。 removeFile方法用于调用validIndex方法,以检查removeFile的index参数是否为ArrayList的有效索引。但是我的文件现在拒绝编译给我错误
无法找到符号 - 方法validIndex()
代码如下:
import java.util.ArrayList;
/**
* A class to hold details of audio files.
*
* @author David J. Barnes and Michael Kölling
* @version 2011.07.31
*/
public class MusicOrganizer
{
// An ArrayList for storing the file names of music files.
private ArrayList<String> files;
/**
* Create a MusicOrganizer
*/
public MusicOrganizer()
{
files = new ArrayList<String>();
}
/**
* Add a file to the collection.
* @param filename The file to be added.
*/
public void addFile(String filename)
{
files.add(filename);
}
/**
* Return the number of files in the collection.
* @return The number of files in the collection.
*/
public int getNumberOfFiles()
{
return files.size();
}
/**
* List a file from the collection.
* @param index The index of the file to be listed.
*/
public void listFile(int index)
{
if(index >= 0 && index < files.size()) {
String filename = files.get(index);
System.out.println(filename);
}
}
/**
* Remove a file from the collection.
* @param index The index of the file to be removed.
*/
public void removeFile(int index)
{
if(files.validIndex() = true){
files.remove(index);
}
}
// Problem with this method. If ArrayList is empty then the indexes variable returns minus 1
public void checkIndex(int index)
{
int size = files.size();
int indexes = size - 1;
if (index >= 0 && index <= indexes){
System.out.println("");
}
else {
System.out.println("That is not a valid index number.");
System.out.println("The index should be between 0 and " + indexes);
}
}
public boolean validIndex(int index)
{
if (index >= 0 && index <= files.size()-1){
return true;
}
else {
return false;
}
}
}
如果有人能够指出为什么我的代码会赢得编译而感激不尽。
答案 0 :(得分:1)
如果您尝试调用自己的方法validIndex,则说错了。
要调用validIndex方法,您应该执行以下操作:
public void removeFile(int index)
{
if(this.validIndex(index)){
files.remove(index);
}
}
请注意files
是ArrayList
类的对象。声明
files.validIndex()
指向validIndex()
类中名为ArrayList
的方法,该方法不存在。该方法存在于您的类中,因此访问它的唯一方法是使用当前对象。将if语句更改为
if(this.validIndex(...) == true){ ... }
或只是
if(validIndex(...) == true){ ... }
答案 1 :(得分:0)
这一行。
if(files.validIndex() = true){
1)什么索引是有效索引?您需要使用validIndex
方法
2)files
没有validIndex
方法,因为它是List
个对象。您的方法是在当前类中定义的,因此不要使用files
为方法调用添加前缀。您可以选择将其替换为this
3)您正在使用赋值操作,而不是布尔条件。要么删除它,因为检查true是多余的,或者使用两个等于
因此。
if (validIndex(index)) {