下記のソースで テキスト入出力を行う際でのご質問がございます。 最終配列がNULLの時と 文字がある場合のデータを入出力する際に Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 at ExIO3.getValue(テスト.java:53) at ExIO3.main(テスト.java:14) というエラーが表示されます。 最終配列にすべて文字が存在する場合は問題ないのですが こちらはBufferedReaderで 1レコードずつ読み込んでいるソースに問題があるのでしょうか? アドバイスどうぞよろしくお願いします。 import java.io.*; //(1)入出力パッケージのインポート import java.text.Normalizer; class ExIO3 { //mainメソッド public static void main(String[] args) throws IOException { ExIO3 object1 = new ExIO3(); //(1)抜出しメソッドgetValueと、 // ソートメソッドsortValueの呼出 object1.sortValue(object1.getValue()); } //getValueメソッド Reader getValue () throws IOException { //(2)FileReaderオブジェクトcsvの生成 FileReader csv = new FileReader ("C:\\javasample\\テスト\\src\\テストin.txt"); //(3)BufferedReaderクラスでFileReaderクラスの // オブジェクトcsvをラップ BufferedReader in = new BufferedReader(csv); //(4)PipedWriterオブジェクトpipeOutを生成 PipedWriter pipeOut = new PipedWriter(); //(5)PipedReaderオブジェクトpipeInを生成 PipedReader pipeIn = new PipedReader(pipeOut); //(6)PrintWriterクラスでPipedWriterクラスの // オブジェクトpipeOutをラップ PrintWriter out = new PrintWriter("C:\\javasample\\テスト\\src\\テストout.txt"); //************************************************************************************************ //(7)入力テキストデータ //************************************************************************************************ String line; String[] arrayline; Integer sequence_No =0 ; //行のカウンタ //(8)読み込みソースがなくなるまでBufferedReaderで1行ずつ読み込み、 // 読み込みデータをprintlnメソッドで書き込み while((line = in.readLine()) != null) { sequence_No++; //連続番号生成 arrayline = line.split(","); //====================================================== String A= arrayline[0] ; String B = arrayline[1] ; //====================================================== //************************************************************************************************ //(9)出力テキストデータ //************************************************************************************************ 顧客郵便番号_編集(A,out); out.print(","); // ※ 顧客住所_編集(B,out); out.println(""); // ※ out.flush(); } //(10)読み込みストリームのクローズ in.close(); //(11)書き込みストリームのクローズ out.close(); return pipeIn; //(12)pipeInオブジェクトのリターン } //************************************************************************************************ //顧客郵便番号_編集A1 //************************************************************************************************ private void 顧客郵便番号_編集(String a, PrintWriter out) { // TODO 自動生成されたメソッド・スタブ out.print(a.replaceAll(" ","").replaceAll(" ","")); } //************************************************************************************************ //顧客住所_編集B2 //************************************************************************************************ private void 顧客住所_編集(String b, PrintWriter out) { // TODO 自動生成されたメソッド・スタブ out.print(b); } //sortValueメソッド void sortValue(Reader source) throws IOException { } }
↧