2017-01-17 3 views
1

そのファイルに1行のテキストを含む外部ファイルを作成し、その行をJavaプログラムで印刷しようとしています。私が試してみました;しかし、私は問題を抱えています。私のコードはエラーを投げているわけではなく、正しく動作していません。Javaの外部ファイルからテキストを印刷する

import java.io.*; 
import java.util.*; 

public class App { 

public static void main(String[] args) { 

    String terminate = "X"; 
    String Question = ""; 
    System.out.println("I am the all-knowing Magic 8 Ball!"); 

    do { 
     Scanner scnr = new Scanner(System.in); 
     System.out.println(""); 
     System.out.println("Ask your question here or enter 'X' to exit:"); 
     Question = scnr.nextLine(); 
     continueGame(Question); 
    } while (terminate != Question); 


     String testData[] = {"test1", "test2", "test3"}; 
     writeFile(testData, "data.txt"); 
     ArrayList<String> fileContents = readFile("data.txt"); 

     if (terminate.equalsIgnoreCase(Question)) { 
     for (String contents : fileContents) { 
      System.out.println(contents); 
     }   
    } 
    } 

public static void continueGame(String Question) { 

    char terminate = 'X'; 
    char condition = Question.charAt(0); 

    if (condition == terminate) 
    { 
     System.out.println(""); 
     System.out.println("Thanks for playing!"); 
     System.exit(0); 
    } 
    try 
    { 
     Random rand = new Random(); 
     int choice; 
     choice = 1 + rand.nextInt(20); 
     responseOptions(choice, Question); 
    } 
    catch (Exception e) 
    { 
     System.out.println("Error: Invalid"); 
    } 
} 

public static void responseOptions(int choice, String answer) 
{ 
    switch (choice) 
    { 
     case 1: answer = "Response: It is certain"; break; 
     case 2: answer = "Response: It is decidely so"; break; 
     case 3: answer = "Response: Without a doubt"; break; 
     case 4: answer = "Response: Yes, definitely"; break; 
     case 5: answer = "Response: You may rely on it"; break; 
     case 6: answer = "Response: As I see it, yes"; break; 
     case 7: answer = "Response: Most likely"; break; 
     case 8: answer = "Response: Outlook good"; break; 
     case 9: answer = "Response: Yes"; break; 
     case 10: answer = "Response: Signs point to yes"; break; 
     case 11: answer = "Response: Reply hazy, try again"; break; 
     case 12: answer = "Response: Ask again later"; break; 
     case 13: answer = "Response: Better not tell you now"; break; 
     case 14: answer = "Response: Cannot predict now"; break; 
     case 15: answer = "Response: Concentrate and ask again"; break; 
     case 16: answer = "Response: Don't count on it"; break; 
     case 17: answer = "Response: My reply is no"; break; 
     case 18: answer = "Response: My sources say no"; break; 
     case 19: answer = "Response: Outlook not so good"; break; 
     case 20: answer = "Response: Very doubtful"; break; 
    } 
    System.out.println(""); 
    System.out.println(answer); 
} 

public static void writeFile(String arrayToWrite[], String filename) { 

    try { 
     PrintWriter wordWriter = new PrintWriter("filename.txt"); 
     for (String words : arrayToWrite) { 
      wordWriter.println(words + "\n"); 
     } 
    } catch (Exception e) { 
     String msg = e.getMessage(); 
     System.out.print(msg); 
    } 
} 

public static ArrayList<String> readFile(String filename) { 
    ArrayList<String> fileContents = new ArrayList(); 
    File myFile = new File(filename); 

    try { 
     Scanner scnr = new Scanner(myFile); 
     String tempStr = ""; 
     while (scnr.hasNextLine()) { 
      tempStr = scnr.nextLine(); 
      fileContents.add(tempStr); 
     } 
    } catch (Exception e) { 
     String msg = e.getMessage(); 
     System.out.println(msg); 
    } 
    return fileContents; 
} 
} 
+0

書き込み後に 'PrintWriter'を閉じてみましたか? – BackSlash

+0

正常に動作しないとはどういう意味ですか?ファイルが作成されていないか、 'writeFile()'が呼び出されていませんか?もっとお聞かせください。 –

+2

どのようにして正しく動作しないのですか?一つのことは、すでに 'println'を使っていても、各単語に余分な' \ n'を追加していることです。 – 4castle

答えて

1

あなたのコードの問題は、あなたがwriteFile()filenameを得ているが、あなたはfilenameとして有するファイル名をしていないが、代わりにあなたがfilename.txtでファイルを作っているということです。 readFile()の中にはまだ作成されていないファイルfilenameがありますが、new file(filename)はファイルが存在しないため空のファイルを作成します。そして、あなたは空のファイルを読んでいます。彼らはあなたに問題が発生しますエラーを通じてないよう余分なノートで、あなたのwriteFile()内のコードの下に

try{ 
    FileWriter fw=new FileWriter(filename); 
    for (String words : arrayToWrite) { 
     fw.write(words + "\n"); 
    } 
    fw.close(); 

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

を入れてはPrintWriterまたはPrintStreamWriterを使用しないようにしてください。

+0

何らかの理由で、ファイルがまだ私のプログラムフォルダに表示されていません –

+0

必要なものをインポートしたい場合、同じコードがここで@coding_insanityで動作しています。あなたの 'filename'変数が何を保持しているか教えてください。 –

+0

それは今働いて、私はちょうどそれを基本的にリフレッシュしなければならなかった。あなたの助けをありがとう、私は本当に感謝します、私のコードは、ファイルが間違って何を表示するためには、どちらも動作していないようです –

関連する問題