- ベストアンサー
Javaの配列に関するエラーについて
- Javaの配列でArrayIndexOutOfBoundsException(配列の範囲外参照)のエラーが発生しています。
- エラーの原因は、配列の大きさが足りないことによるものです。
- フィールドで宣言している配列の大きさは十分なはずなのに、エラーが出てしまいます。どのように修正すればエラーがなくなるのか解決策を教えてください。
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- javaプログラムのエラーについてです
プログラムは無事コンパイルすることができました。 しかし、アプレットを実行すると以下のようなエラーが発生します。 なぜこのようなエラーが起こるのでしょうか?勉強不足ですいません。 Exception in thread "AWT-EventQueue-1" java.lang.ArrayIndexOutOfBoundsException: 2 at sample1.paint(sample1.java:19) at java.awt.Container.update(Container.java:1988) at sun.awt.RepaintArea.updateComponent(RepaintArea.java:255) at sun.awt.RepaintArea.paint(RepaintArea.java:232) at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:347) at java.awt.Component.dispatchEventImpl(Component.java:4948) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4698) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735) at java.awt.EventQueue.access$200(EventQueue.java:103) at java.awt.EventQueue$3.run(EventQueue.java:694) at java.awt.EventQueue$3.run(EventQueue.java:692) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo main.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo main.java:87) at java.awt.EventQueue$4.run(EventQueue.java:708) at java.awt.EventQueue$4.run(EventQueue.java:706) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo main.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:705) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre ad.java:242) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread. java:161) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre ad.java:150) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138) at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
- 締切済み
- その他(インターネット・Webサービス)
- Exception in thread "main" java.la
Exception in thread "main" java.lang.StackOverflowError というエラーが出ます moji()にtestという変数をいれてやり、mainから、書かそうとしていますが、 Exception in thread "main" java.lang.StackOverflowError というエラーが出ますが、何故かわかりません。 宜しくお願いします。 ************************************************************ public class ArgsTest2 { public static void main(String args[]) { moji(); } public static void moji() { String[] test = {"abcde","fghij"}; main(test); } }
- ベストアンサー
- Java
- Javaのエラーなのですが
import java.awt.*; import java.awt.event.*; class PrefFrame extends Frame { public PrefFrame(String title) { //フレームのタイトル setTitle(title); //ウィンドウを閉じる時 addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } } public class PrefTest { public static void main(String args[]) { PrefFrame frm = new PrefFrame("都道府県マスター"); frm.setLocation(300, 200); frm.setSize(250, 350); frm.setBackground(Color.LIGHT_GRAY); frm.setVisible(true); } } と入力しました。コンパイルは出来て、CLASSファイルは作成できたのですが、実行できずにエラーException in thread "main" java.lang.NoClassDefFoundError: PrefTest/javaとなってしまいます。実行するためにはどうしたらよいのでしょうか?
- 締切済み
- Java
- 配列インデックス範囲外エラー?
以下のようなプログラムを実行しようとしたところ、 java.lang.ArrayIndexOutOfBoundsException というエラーが出ました。 args[0]が、配列の範囲外のインデックスを指しているため出ているようなのですが、 原因がよく分かりません。 基本的なことで申し訳ありませんが、ご教授いただけるとありがたいです。 public class test0708_6 { public static void main(String args[]) { // TODO Auto-generated method stub Cell leftmost_cell = null; int leng = args[0].length(); ← java.lang.ArrayIndexOutOfBoundsException for(int i=1; i<=leng; i++) { leftmost_cell = new Cell(args[0].charAt(leng-i), leftmost_cell); } ・・・省略・・・ } }
- ベストアンサー
- Java
- javaの配列でエラーが出ます。
javaの配列でエラーが出ます。 先ほどもjavaの配列で質問させていただいたんですが、 また同じようなところでエラーが出ました。。。 マインスイーパーを作ろうとしているんですが、 周りにある爆弾の数を数えるところでエラーが出ます。 たびたび頼ってばかりで申し訳ありません。 一応自分なりに考えたのを以下に。。 爆弾があるというのはmine[][]==10であらわしています。 //フィールド int[][] mine=new int[9][9]; Random rnd=new Random(); //スレッド public void run(){ //爆弾生成 int yoko,tate; for(int i=0;i<=9;i++){ yoko=(rnd.nextInt()>>>1)%9; tate=(rnd.nextInt()>>>1)%9; if(mine[yoko][tate]!=10)mine[yoko][tate]=10; else i-- } kazugime(); }//本当はこの後に描画のループが続きます。 //数を代入するメソッド public void kazugime(){ int kazu=0; for(int i=0;i<=8;i++){ for(int j=0;j<=8;j++){ kazu=0; if(mine[i][j]!=10){ //上の段 if(i>=1&&j>=1){if(mine[i-1][j-1]==10)kazu++;} if(i>=1){if(mine[i-1][j]==10)kazu++;} if(i>=1&&j<=7){if(mine[i-1][j+1]==10)kazu++;} //真ん中の段 if(j>=1){if(mine[i][j-1]==10)kazu++;} if(j<=7){if(mine[i][j+1]==10)kazu++;} //下の段 if(i<=7&&j>=1){if(mine[i+1][j+1]==10)kazu++;} if(i<=7){if(mine[i+1][j]==10)kazu++;} if(i<=7&&j<=7){if(mine[i+1][j+1]==10)kazu++;} mine[i][j]=kazu; } } } エラーは Uncaught exception java/lang/ArrayIndexOutOfBoundsException です。 足らない部分があればご指摘お願いします。 どうかよろしくお願いします。
- ベストアンサー
- Java
- 配列とwhileを使った2重ループを使って書きたい
今JAVAの勉強をしているのですが、「以下のような画面を表示するコードをint型2次元配列とwhileを使った2重ループを使って書いてください。」 ======================================= a[0][0]:1 a[0][1]:2 a[1][0]:3 a[1][1]:4 ======================================= の問題をやっているのですが実行してみると a[0][0]:1 a[1][1]:4 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 at exsercise141.java.Exsercise141Java.main(Exsercise141Java.java:32) Java Result: 1 ビルド成功(合計時間: 0秒) と表示されてしまい、a[0][1]:2とa[1][0]:3が表示されません。 コードは以下のとおりです。 public static void main(String[] args) { // TODO code application logic here int i=0; int j=0;//変数を宣言 int B [] [] = new int [2] [2];//2次元配列を宣言 //======================================== B [0] [0] = 1;// B [0] [1] = 2; //========================================== B [1] [0] = 3; B [1] [1] = 4; //========================================== while(i<=3) { while(j<=3) { System.out.println("a["+i+"]["+j+"]:"+B[i][j]); i++; j++; } } } } どのようにすればa[0][1]:2とa[1][0]:3も表示されますか? ご教授願います。 ちなみにNetBeansを使用しております。 よろしくお願いします。
- ベストアンサー
- Java
- java 実行エラーについて
プログラムを実行すると、 Exception in thread "main"java.lang.NoClassDefFoundError:Sample と出ます。理由がわかる人はぜひ教えてください。 一応プログラムを載せておきます。 < Sample.java > public class Sample{ public static void main(String[] argc){ System.out.println("Hello World!"); } } お願いします。
- ベストアンサー
- Java
お礼
解決できました! ありがとうございました!
補足
for文を回す条件としてk2が1~31の範囲と指定しているので、多分そうだと思います。 アドバイスに従ってk2の値をSystem.out.println("k2"+k2);として表示させてみましたが、「k2:0」となってエラーが発生しており、k2が0より大きくなっていない模様です。 試しにa[30][0]=(""+333);とプログラムしてみましたが、以下の様なエラーが出てきます。 エラー Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 30 エラー箇所 a[30][0]=(""+333); フィールドで配列の大きさを宣言して、他のところで何かの都合で大きさが変わってしまうなんてことはあるのでしょうか?