2

ですから、私はJavaを初めて使用しますが、試していることはすべて機能していません。ファイルから読み取る方法はたくさんあるので、一番簡単な方法だと思います。基本的に、これはMadLibsアプリケーションです。1つの方法。これを正常に実行しようとしましたが、file.close()関数でエラーが発生します。私がそれを奪うならば、私は得るFileNotFoundException errors。だから私はちょっと迷っています。何を変更すればよいですか?

public static void main(String[] args) throws Exception {
    String[] nouns = new String[4];
    String[] verbs = new String[6];
    String[] adjectives = new String[7];
    Scanner s = new Scanner(System.in);
    System.out.println("Please input 4 nouns, press \"Enter\" after each input.");
    for(int i=0; i<4; i++){
        nouns[i] = s.next();
    }
    System.out.println("Please input 6 verbs, press \"Enter\" after each input.");
    for(int i=0; i<6; i++){
        verbs[i] = s.next();
    }
    System.out.println("Please input 7 adjectives, press \"Enter\" after each input.");
    for(int i=0; i<7; i++){
        adjectives[i] = s.next();
    }
    File file = null;
    FileReader fr = null;
    LineNumberReader lnr = null;

    try {
        file = new File("H:\\10GraceK\\AP Computer Science\\Classwork\\src\\madlib.txt");
        fr = new FileReader(file);           
        lnr = new LineNumberReader(fr);
        String line = "";           
        while ((line = lnr.readLine()) != null) {
            System.out.println(line);               
        }
    } finally {
        if (fr != null) {
            fr.close();
        }
        if (lnr != null) {
            lnr.close();
        }
    }
}

わかりました、例外を修正しました。これで、ファイル内のテキストは動詞[0]などを読み取りますが、実際には、配列内の単語ではなく、動詞[0]を出力します。読み取った文字列に配列内の文字列を追加するにはどうすればよいですか?

4

3 に答える 3

6

メソッドcloseはに対して未定義ですFileFileReader.close代わりに使用してください。交換

file.close();

fr.close();

実際LineNumberReader、これは基になるを閉じるので、意志を閉じるだけで十分ですFileReaderclosefinallyブロックに配置できます。この例を参照してください

于 2013-01-02T21:54:02.560 に答える
2

いつものように、ファイルやストリームの読み取りに関しては、commons-ioを推奨する必要があります。

たとえば、次の例を使用してみてください。

IOUtils.readLines

コードのエラーは、@Reimeusが欠落しているメソッドについて言及したとおりです。

于 2013-01-02T21:58:32.437 に答える
0

Scanner APIが改善され、より簡単になりました。

try {
    Scanner sc = new Scanner(new File("text.txt"));
    sc.useDelimiter(System.getProperty("line.separator"));
    String ln = sc.next();

} catch (FileNotFoundException ex) {
    Logger.getLogger(this.class.getName()).log(Level.SEVERE, null, ex);
}
于 2013-01-02T22:11:54.253 に答える