電子書籍の厳選無料作品が豊富!

コンパイルは通るのですが実行するとエラーが表示され解決の仕方がわかりません。教えていただければ幸いです。問題はinput.txtを配列に格納し再度出力させることです。
コードはこちらです。


import java.io.*;
public class ReverseString {
public static void main(String[] args) {
try (InputStreamReader reader = new InputStreamReader(
new FileInputStream("input.txt"), "UTF-8");
OutputStreamWriter writer = new OutputStreamWriter(
new FileOutputStream("output_q1.txt"), "UTF-8")) {
int i=0;
int j;
int[] arraydata = {};
while ((arraydata[i] = reader.read()) != -1) {
i++;
}
for(j=i;j<0;j--){
writer.write(arraydata[j]);
}
reader.close();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

エラー内容はこちらです。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
at ReverseString.main(ReverseString.java:11)

A 回答 (2件)

長さ0の固定配列を使おうとして問題となっています。


読み込みバッファを用意するなら、
長さ指定済みの固定配列にするか、

int[] buffA = new int[80];
buffA[0] = reader.read();
buffA[1] = reader.read();
... // バッファあふれ注意

可変配列にするかのどちらかにしましょう。

List<Integer> buffB = new ArrayList<Integer>();
buffB.add(reader.read());
buffB.add(reader.read());
...
    • good
    • 1

エラーメッセージを読んで原因を理解し, しかるべく修正する.

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!