2014-10-19 29 views
0

我試圖爲我的音樂播放器製作playcount方法。試圖讓我的playCount方法在音樂播放器中工作

在我的跟蹤方法中,我將一個字段定義爲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()); 
    } 
} 

我所得到的是一個錯誤「非靜態方法incrementCount()不能從靜態上下文中引用。我不明白這一點,我應該如何解決它。 任何及所有的幫助感激!

+0

這是一個非靜態方法,你需要調用它的一個實例。你需要嘗試調用,經過'軌道的軌道=軌道。 get(index);'和ne編輯爲像'track.incrementCount();'調用。 – 2014-10-19 21:35:52

+0

@ Rp-那創造了奇蹟!你能解釋一下爲什麼我需要給它打電話嗎? – Gurkang 2014-10-19 21:38:03

回答

0

你應該把這種對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()); 
    } 
}