前提・実現したいこと
ここに質問の内容を詳しく書いてください。
(例)Javaでファイル操作を関数に分け、書き込みを行いたいのですが、一度目はうまくいくのですがファイルに書き込んだ後にエラーが発生しました。
発生している問題・エラーメッセージ
Exception in thread "main" java.util.NoSuchElementException at java.base/java.util.Scanner.throwFor(Scanner.java:937) at java.base/java.util.Scanner.next(Scanner.java:1478) at Hello.main(Hello.java:26)
該当のソースコード
Java
1import java.io.File; 2import java.io.IOException; 3import java.io.FileNotFoundException; 4import java.io.FileWriter; 5import java.io.FileReader; 6import java.io.BufferedWriter; 7import java.io.BufferedReader; 8import java.util.Scanner; 9import java.util.InputMismatchException; 10 11class Hello{ 12 public static void main(String[] args){ 13 try{ 14 15 FILE file=new FILE();//FILEクラスをfileと宣言。 16 String file_name="test.txt"; 17 String str1; 18 19 20 while(true) 21 { 22 23 Scanner scan =new Scanner(System.in); 24 25 System.out.println("何か入力してください。"); 26 str1=scan.next(); 27 System.out.println("何をしますか?書き込みならw,読み込みならr,ファイルの中身をリセットするならR,\n終わる場合はその他を押してください。"); 28 str1=scan.next(); 29 30 if(str1.equals("w"))file.Write(file_name); 31 else if(str1.equals("r"))file.Read(file_name); 32 else if(str1.equals("R"))file.Reset(file_name); 33 else break; 34 35 scan.close(); 36 } 37 38 }catch(InputMismatchException e) 39 { 40 System.out.println("エラーが発生しました。"); 41 } 42 } 43} 44 45class FILE 46{ 47 void Read(String file_name) 48 { 49 try{ 50 File file=new File(file_name); 51 BufferedReader br=new BufferedReader(new FileReader(file)); 52 53 br.close(); 54 }catch(IOException e) 55 { 56 System.out.println("ファイルが見つかりませんでした。"); 57 } 58 } 59 60 void Write(String file_name) 61 { 62 try{ 63 File file=new File(file_name); 64 String str; 65 BufferedWriter bw=new BufferedWriter(new FileWriter(file,true)); 66 Scanner scan=new Scanner(System.in); 67 68 System.out.println("入力してください。"); 69 str=scan.nextLine(); 70 71 bw.write(str); 72 bw.write("\n"); 73 74 bw.close(); 75 scan.close(); 76 77 }catch(FileNotFoundException e) 78 { 79 System.out.println(e); 80 } 81 catch(IOException e) 82 { 83 System.out.println("ファイルが見つかりませんでした。"); 84 }catch(InputMismatchException e) 85 { 86 System.out.println("エラーが発生しました。"); 87 } 88 System.out.println("書き込みました。"); 89 } 90 91 void Reset(String file_name) 92 { 93 try{ 94 File file=new File(file_name); 95 BufferedWriter bw=new BufferedWriter(new FileWriter(file)); 96 97 bw.write(""); 98 bw.close(); 99 }catch(FileNotFoundException e) 100 { 101 System.out.println(e); 102 } 103 catch(IOException e) 104 { 105 System.out.println("エラーが発生しました。"); 106 } 107 } 108}
試したこと
Scannerの宣言位置を入れ替えたり、scan.close()の位置を変えたりしたのですが、変わりませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー