2016-04-23 16 views
0

I/Oに問題があります。私はSongTextFileProcessorというクラスを持っています。このクラスは、Songオブジェクト(Songクラスで定義されています)のファイルへの読み書きを扱うことになっています。ここに私の書き込み方法があります:JavaファイルI/Oに問題がありますか?

@Override 
public void writeSong(String songName, String fileName) 
{ 
    String [] songObject = songName.split(", "); 
    Song s1 = new Song (songObject[0], songObject[1], songObject[2]); 

    try 
    { 
    PrintWriter output = new PrintWriter (new File (fileName)); 
    output.print(s1.printSong()); 
    output.close(); 
    } 
    catch (Exception e) 
    { 
     System.out.println("Exception caught."); 
    } 
} 

そして、私の読み取り方法:

@Override 
public void readSong(String fileName) 
{ 
    try 
    { 
    BufferedReader in = new BufferedReader(new FileReader(fileName)); 

    String line = null; 
    while((line = in.readLine()) != null) 
    { 
     System.out.println(line); 
    } 
    in.close(); 
    } 

    catch (Exception e) 
    { 
     System.out.println("Exception caught."); 
    } 
} 

しかし、私はこのコードを使用してテストクラスからこれらのメソッドを呼び出すしようとすると:

String songName = "Maad City, Kendrick Lamar, Hip-Hop"; 
String fileName = "songs.txt"; 

writeSong(songName, fileName); 
readSong(fileName); 

ことができます私はエラー "メソッドのwriteSong(String、String)は、タイプTestのために定義されていません"。これは私がJava I/OとJavaに精通しており、これらのメソッドの両方がTestクラスから呼び出されると完全に機能するため、私を苛立たせます。つまり、引数を渡すプロセスに問題がなければなりませんSongTextFileProcessor内のメソッド何か案は?

public class Song 
{ 
private String title, artist, genre; 

public String getTitle() 
{ 
    return title; 
} 

public void setTitle(String title) 
{ 
    this.title = title; 
} 

public String getArtist() 
{ 
    return artist; 
} 

public void setArtist(String artist) 
{ 
    this.artist = artist; 
} 

public String getGenre() 
{ 
    return genre; 
} 

public void setGenre(String genre) 
{ 
    this.genre = genre; 
} 

public Song(String title, String artist, String genre) 
{ 
    this.title = title; 
    this.artist = artist; 
    this.genre = genre; 
} 

public String printSong() 
{ 
    return (getTitle() + " by " + getArtist() + " is a " + getGenre() + " song."); 
} 
} 

The readSong and writeSong methods are the only methods in the SongTextFileProcessor class, and both of those methods are defined by Interfaces. And i've shown all the code I have in the Test class. 
+0

はUは、あなたの質問がより明確になるように全体のコードを表示する必要がある年の歌のクラス –

+1

を提供

は、ここで曲のクラスです。 – a874

+1

あなたの 'writeSong()'クラスはどのクラスにありますか、どこから呼び出していますか?それらのクラスは提供できますか? –

答えて

0

はテキストクラスでこれを試してください:

String songName = "Maad City, Kendrick Lamar, Hip-Hop"; 
    String fileName = "songs.txt"; 

    SongTextFileProcessor stfp = new SongTextFileProcessor(); 

    stfp.writeSong(songName, fileName); 
    stfp.readSong(fileName); 
+0

これは非常に役に立ちました、ありがとうございました。 –

関連する問題