0

.rtf ファイルから印刷しようとしていますが、if ステートメントが壊れているようです。出力が最初の出力行として出力され、ユーザーが検索している曲と、フォーマットされていない歌詞が表示されます。それ以外は、コードは while ループをループするだけです。ヒットしたときに曲を見つけていないようif(line.contains(song)){です。今のところ、ファイルの場所をハードコーディングしているだけですが、機能するようになったら、メソッドでユーザー入力を使用するようにします。

どんな助けでも大歓迎です。

public static void main(String[] args){
     lyricsSearch("/Users/adam/Documents/Final/BlackDahliaMurder/", "miasma.rtf");
}

public static void lyricsSearch(String artist, String song){
    try {
        String stringSearch = song;
        // Opens the album file as a buffered reader
        BufferedReader bf = new 
        BufferedReader(new FileReader("/Users/adam/Documents/Final/BlackDahliaMurder/miasma.rtf"));

        // Let the user know what we are searching for
        System.out.println("Searching for " + song + "...");

        // Loop through each line, parsing.
        String line;

        while (( line = bf.readLine()) != null){
            System.out.println(line);
            if (line.contains(song)){
                String[] songInfo = line.split("\\|");
                System.out.println(Arrays.toString(songInfo));
            }       
        }
        bf.close();
    }
    catch (IOException e) {
        System.out.println("IO Error Occurred: " + e.toString());
    }
}
4

2 に答える 2

0

ファイル構成は正しくなければなりません。アルバムのすべての曲は 1 つのファイルにありました。曲はパイプで始まり、各行は別のパイプで終わる必要があります。重要なのは、ファイルに改行を入れないことです。

import java.util.Arrays;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;

public class Experiment {

private int artist;
private String album;
private String song;
private String aaa = "/Users/adam/Documents/Final/AngelsAndAirwaves/";
private String bdm = "/Users/adam/Documents/Final/BlackDahliaMurder/";
private String naf = "/Users/adam/Documents/Final/NakedAndFamous/";
private String awn = "/Users/adam/Documents/Final/AWOLNATION/";


    public static void lyricsSearch(int artist, String album, String song) {
        String userArtistChoice = null;
        album.toLowerCase();
        song.toLowerCase();
        try {

            if (artist == 0){
                userArtistChoice = "/Users/adam/Documents/Final/AngelsAndAirwaves/";
            }
            else if (artist == 1){
                userArtistChoice = "/Users/adam/Documents/Final/BlackDahliaMurder/";
            }
            else if (artist == 2){
                userArtistChoice = "/Users/adam/Documents/Final/NakedAndFamous/";
            }
            else if (artist == 3){
                userArtistChoice = "/Users/adam/Documents/Final/AWOLNATION/";
            }
            else
                System.out.println("that i'n't right....");

            String stringSearch = song;
            // Opens the album file as a buffered reader
            BufferedReader bf = 
                new BufferedReader(new FileReader(userArtistChoice + album + ".txt"));

            // Let the user know what we are searching for
            System.out.println("Searching for " + song + "...");

            String line;
            //loop through each line, parsing     
            while ((line = bf.readLine()) != null){
                //print the song.  each | delimits a string.  song stops at carriage return.
                if (line.toLowerCase().contains(song)){
                    String[] songInfo = line.split("\\|");
                    for(String el : songInfo) {
                    System.out.println(el);
                }

            }   
        }
        bf.close();
        }
        catch (IOException e) {
            System.out.println("IO Error Occurred: " + e.toString());
        }
    }
}
于 2013-07-30T17:37:41.183 に答える
0
lyricsSearch("/Users/adam/Documents/Final/BlackDahliaMurder/", "miasma.rtf");

の署名を見ると、lyricsSearch「miasma.rtf」という名前の曲を探しているようです。これは意図したものではなかったようです。:)

それ以外の場合、コードは正常に見えます。

于 2013-07-28T18:29:20.037 に答える