dポイントプレゼントキャンペーン実施中!

javaの勉強をしているのですが
arraycopy()を使ったプログラムでエラーが出てしまいます。
class Ex97{
public static void main(String args[]){
int []a = new int[10];
int []b = new int[5];

for(int i=0; i<10; i++){
a[i] = (int)(Math.random()*10);
}

System.arraycopy(a, 2, b, 0, 5);

for(int i=0; 0<a.length-1; i++){
System.out.println(a[i]);
}
System.out.println("");
for(int i=0; 0<b.length; i++){
System.out.println(b[i]);
}
}
}
/*メッセージ
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at Ex32.main(Ex32.java:13)
*/
このプログラムはaの3番目の要素から5つ分の内容をbへコピーする
というものです。
ご回答よろしくお願いします。

A 回答 (2件)

修正コードとの差分です。



--- Ex97.java.old2007-09-07 07:49:14.000000000 +0900
+++ Ex97.java2007-09-07 07:49:40.000000000 +0900
@@ -9,11 +9,11 @@

System.arraycopy(a, 2, b, 0, 5);

-for(int i=0; 0<a.length-1; i++){
+for(int i=0; i<a.length; i++){
System.out.println(a[i]);
}
System.out.println("");
-for(int i=0; 0<b.length; i++){
+for(int i=0; i<b.length; i++){
System.out.println(b[i]);
}
}

forループの終了条件が間違っているのではないでしょうか。
当方でコンパイル、実行したところ、
上の修正により、問題なく実行できました。
    • good
    • 0
この回答へのお礼

ご覧頂きありがとうございます。
for文の終了条件がとんでもないことになっていました。
この程度のことも気づけず申し訳ありません。
ご回答ありがとうございました^^

お礼日時:2007/09/07 17:46

エラーメッセージの内容を見ると、エラーの箇所は


Ex97 の中ではなく、Ex32 の13行目となっていますが?

この回答への補足

ややこしくて申し訳ありません。
この課題はEx97なのですが
Ex32が不要になり、かつこのプログラムがEx97の問題内容と類似していたため
Ex32を編集しプログラムをコンパイル→その後投稿する際
Ex97に書き換えたと言った感じです。

補足日時:2007/09/07 04:01
    • good
    • 0

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