出力されるファイルの各行にブロック開始({)、終了(})、開始終了({})があれば、それぞれ:の後に+、ー、*を出力させるプログラムを書きたいです。
やったこと
java
1import java.io.*; 2import java.util.ArrayList; 3 4public class AddLineNumber { 5 6 public static void main(String[] args) { 7 try { 8 FileReader fr = new FileReader("AddLineNumber.java"); 9 BufferedReader br = new BufferedReader(fr); 10 11 FileWriter fw = new FileWriter("Output.txt"); 12 BufferedWriter bw = new BufferedWriter(fw); 13 14 String s; 15 int lineNumber = 1; 16 while ((s = br.readLine()) != null) { 17 ArrayList<String> strs = new ArrayList<String>(); 18 strs.add(s); 19 if (strs.contains("{")) { 20 bw.write(String.format("%04d", lineNumber) + ":" + "+" + " " + s + "\r\n"); 21 } 22 if (strs.contains("}")) { 23 bw.write(String.format("%04d", lineNumber) + ":" + "-" + " " + s + "\r\n"); 24 } 25 if (strs.contains("{" + "}")) { 26 bw.write(String.format("%04d", lineNumber) + ":" + "*" + " " + s + "\r\n"); 27 } else { 28 bw.write(String.format("%04d", lineNumber) + ":" + " " + s + "\r\n"); 29 } 30 lineNumber++; 31 } 32 br.close(); 33 bw.close(); 34 } catch (IOException e) { 35 System.out.println(e); 36 } 37 } 38}
リストを作りファイルを一行ずつ読み取りcontainsメソッドでその行に含まれているか判定。含まれていたら書式を指定し出力
出力結果
Output.txt
10001: import java.io.*; 20002: import java.util.ArrayList; 30003: 40004: public class AddLineNumber { 50005: 60006: public static void main(String[] args) { 70007: try { 80008: FileReader fr = new FileReader("AddLineNumber.java"); 90009: BufferedReader br = new BufferedReader(fr); 100010: 110011: FileWriter fw = new FileWriter("Output.txt"); 120012: BufferedWriter bw = new BufferedWriter(fw); 130013: 140014: String s; 150015: int lineNumber = 1; 160016: while ((s = br.readLine()) != null) { 170017: ArrayList<String> strs = new ArrayList<String>(); 180018: strs.add(s); 190019: if (strs.contains("{")) { 200020: bw.write(String.format("%04d", lineNumber) + ":" + "+" + " " + s + "\r\n"); 210021: } 220022: if (strs.contains("}")) { 230023: bw.write(String.format("%04d", lineNumber) + ":" + "-" + " " + s + "\r\n"); 240024: } 250025: if (strs.contains("{" + "}")) { 260026: bw.write(String.format("%04d", lineNumber) + ":" + "*" + " " + s + "\r\n"); 270027: } else { 280028: bw.write(String.format("%04d", lineNumber) + ":" + " " + s + "\r\n"); 290029: } 300030: lineNumber++; 310031: } 320032: br.close(); 330033: bw.close(); 340034: } catch (IOException e) { 350035: System.out.println(e); 360036: } 370037: } 380038:- } 390038: } 40
その行に空白が含まれると空白以前までしか判定されない?のか38行目しか思い通りの結果にならなかった。
どなたか解決方法教えてください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/07/03 01:21 編集
2022/07/03 04:08