継承を使って指定したテキストファイルの文字を別のファイルに書き込むプログラムを作っています。継承の仕組みがあまり理解できておらず、困っています。
スーパークラスの機能:Jfind
・検索する文字列の数、検索する文字列、読み込むテキストファイル名のコンソール入力
・テキストファイル名はオープンできるまで繰り返し入力
・検索して該当した行を行番号付きで配列に格納、表示
サブクラスの機能:JfindFw
・書き込むファイル名をコンソール入力
・スーパークラスで格納した該当行を別のテキストファイルに入力
スーパークラスJfindとサブクラスJfindFwはそれぞれコンパイルできています。
ただ、サブクラスJfindを実行しても書き込むファイルが作成されるだけで中身に該当行の書き込みができていません。
lang
1import java.io.*; 2 3class Jfind{ 4 5 public static int i = 0; 6 public static String[] searchLine= new String[100]; 7 8 public static void main(String args[])throws IOException{ 9 10 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 11 12 System.out.println("検索する文字列の数を入力してください"); 13 String kazu = br.readLine(); 14 int iKazu = Integer.parseInt(kazu); 15 16 String[] search = new String[iKazu]; 17 System.out.println("検索する文字列を入力してください"); 18 for(int a=0;a<iKazu;a++){ 19 search[a] = br.readLine(); 20 } 21 22 while(true){ 23 24 try{ 25 System.out.println("読み込むファイル名を入力してください"); 26 String fileName = br.readLine(); 27 BufferedReader br2 = new BufferedReader(new FileReader(fileName+".txt")); 28 29 String gyo; 30 int j = 0; 31 String[] mojiLine = new String[100]; 32 33 while((mojiLine[j] = br2.readLine()) !=null){ 34 for(int b=0;b<iKazu;b++){ 35 if(mojiLine[j].indexOf(search[b])!=-1){ 36 gyo = String.valueOf(j+1); 37 inputsearchLine("行番号:"+gyo+" "+mojiLine[j]); 38 i++; 39 b++; 40 } 41 } 42 j++; 43 } 44 br2.close(); 45 break; 46 47 }catch( FileNotFoundException e){ 48 System.out.println("読み込みエラー"); 49 50 } 51 } 52 for(int k=0;k<i;k++){ 53 System.out.println(searchLine[k]); 54 } 55 } 56 public static void inputsearchLine(String str){ 57 searchLine[i] = str; 58 } 59} 60class JfindFw extends Jfind{ 61 62 JfindFw(){ 63 64 } 65 public static void main(String args[])throws IOException{ 66 Jfind obj = new Jfind(); 67 68 BufferedReader brOutFile = new BufferedReader(new InputStreamReader(System.in)); 69 70 System.out.println("書き込むファイル名を入力してください"); 71 String outFileName = brOutFile.readLine(); 72 PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(outFileName+".txt"))); 73 74 String[] outMoji = searchLine; 75 for(int x=0;x<i;x++){ 76 pw.println(outMoji[x]); 77 } 78 pw.close(); 79 } 80}
lang
1C:\work\exercise>java Jfind 2検索する文字列の数を入力してください 32 4検索する文字列を入力してください 5a 6b 7読み込むファイル名を入力してください 8test 9行番号:1 ccccca 10行番号:2 aaaaaaaaaaaaaaaaaaaaaaA 11行番号:3 bbbbbbbbbbbbbbbbbbBa 12 13C:\work\exercise>java JfindFw 14書き込むファイル名を入力してください 15outTest 16 17C:\work\exercise> 18
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/12 02:59
退会済みユーザー
2017/09/12 03:25
2017/09/12 04:13