Java错误"找不到符号 - 方法(validIndex)"

时间:2016-10-06 14:47:11

标签: java bluej

我正在为我的课程完成作业。我被要求创建一个有效的索引方法,检查输入的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;
        }
    }



}

如果有人能够指出为什么我的代码会赢得编译而感激不尽。

2 个答案:

答案 0 :(得分:1)

如果您尝试调用自己的方法validIndex,则说错了。

要调用validIndex方法,您应该执行以下操作:

public void removeFile(int index)
    {
        if(this.validIndex(index)){
            files.remove(index);
        }
    }

请注意filesArrayList类的对象。声明

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)) {