Java 尝试让我的playCount方法在music player中工作

Java 尝试让我的playCount方法在music player中工作,java,Java,我正在尝试为我的musicplayer创建一个播放计数方法 在我的track方法中,我定义了一个字段作为playCount,然后创建了一个递增该字段的方法。但在我的主课上,当播放一首歌的时候,我似乎不能叫它 public class Track { // The artist. private String artist; // The track's title. private String title; // Where the track is stored. private Strin

我正在尝试为我的musicplayer创建一个播放计数方法

在我的track方法中,我定义了一个字段作为playCount,然后创建了一个递增该字段的方法。但在我的主课上,当播放一首歌的时候,我似乎不能叫它

public class Track
{
// The artist.
private String artist;
// The track's title.
private String title;
// Where the track is stored.
private String filename;

public int playCount;
/**
 * Constructor for objects of class Track.
 * @param artist The track's artist.
 * @param title The track's title.
 * @param filename The track file. 
 */
public Track(String artist, String title, String filename)
{
    setDetails(artist, title, filename);
    playCount = 0;
}

public void resetCount(){
    playCount = 0;
}

public void incrementCount(){
    playCount++;
}
这是我的主要类,一些代码被省略了

public class MusicOrganizer
{
// An ArrayList for storing music tracks.
private ArrayList<Track> tracks;
// A player for the music tracks.
private MusicPlayer player;
// A reader that can read music files and load them as tracks.
private TrackReader reader;

/**
 * Create a MusicOrganizer
 */
public MusicOrganizer()
{
    tracks = new ArrayList<Track>();
    player = new MusicPlayer();
    reader = new TrackReader();
    readLibrary("audio");
    System.out.println("Music library loaded. " + getNumberOfTracks() + " tracks.");
    System.out.println();
}

/**
 * Add a track file to the collection.
 * @param filename The file name of the track to be added.
 */
public void addFile(String filename)
{
    tracks.add(new Track(filename));
}

/**
 * Add a track to the collection.
 * @param track The track to be added.
 */
public void addTrack(Track track)
{
    tracks.add(track);
}

/**
 * Play a track in the collection.
 * @param index The index of the track to be played.
 */
public void playTrack(int index)
{
    if(indexValid(index)) {
        Track.incrementCount(); //This is where my problem is. I just want to call the increment   method so that it adds one.
        stopPlaying();
        Track track = tracks.get(index);
        player.startPlaying(track.getFilename());
        System.out.println("Now playing: " + track.getArtist() + " - " + track.getTitle());
    }
}
公共类音乐组织器
{
//用于存储音乐曲目的数组列表。
私有ArrayList轨道;
//用于播放音乐曲目的播放器。
私人音乐播放器;
//可以读取音乐文件并将其作为曲目加载的读取器。
私人轨道阅读器;
/**
*创建一个音乐组织器
*/
公共音乐组织者()
{
tracks=newarraylist();
player=新音乐播放器();
reader=新的TrackReader();
readLibrary(“音频”);
System.out.println(“音乐库已加载。”+getNumberOfTracks()+“曲目”);
System.out.println();
}
/**
*将曲目文件添加到集合中。
*@param filename要添加的曲目的文件名。
*/
公共void addFile(字符串文件名)
{
添加(新曲目(文件名));
}
/**
*将曲目添加到集合中。
*@param track要添加的曲目。
*/
公共无效添加轨道(轨道)
{
tracks.add(track);
}
/**
*播放集合中的曲目。
*@param index要播放的曲目的索引。
*/
公共void playTrack(int索引)
{
if(索引有效(索引)){
Track.incrementCount();//这就是我的问题所在。我只想调用increment方法,以便它添加一个。
停止铺设();
Track Track=tracks.get(索引);
player.startPlaying(track.getFilename());
System.out.println(“正在播放:“+track.getArtist()+”-“+track.getTitle());
}
}
我得到的是一个错误“无法从静态上下文引用非静态方法incrementCount()。我不理解这一点以及我应该如何修复它。
非常感谢所有帮助!

您应该在
track
实例中调用此函数,而不是在
track
类中调用此函数

public void playTrack(int index)
{
    if(indexValid(index)) {
        Track track = tracks.get(index);
        stopPlaying();
        player.startPlaying(track.getFilename());
        track.incrementCount();
        System.out.println("Now playing: " + track.getArtist() + " - " + track.getTitle());
    }
}

这是一个非静态的方法,你需要在一个实例上调用它。你需要在
Track Track=tracks.get(index);
之后尝试调用它,并且需要像
Track.incrementCount();
@Rp一样调用它-这很有效!你能解释一下为什么我需要在之后调用它吗?