Re: [問題] sort compiler過了 .. 執行不ok 大問栽

看板java作者時間19年前 (2006/11/27 14:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
※ 引述《roses0415.bbs@ptt.cc (.........)》之銘言: > 我是要做一個陣列 > 若輸入為"999"就停止 > 再把輸入的數做排大小(偽bubble sort) > compile過了 不過執行到一半就會出現怪怪的 > 例如我輸入了:10 20 999 > Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:3 > at arr.main(arr.java:40) > Press any key to continue... > 請各位前輩給我一點提示八..多謝多謝 大感激 > 以下為我的程式碼 > import javax.swing.JOptionPane; > public class arr > {public static void main(String args[]) > { > int[] a1=new int[100]; > int i; > int b=0; > for(i=0;i<=14;i++) > {String out=JOptionPane.showInputDialog(null,"enter int","window",JOptionPane.QUESTION_MESSAGE); > a1[i]=Integer.parseInt(out); > if(a1[i]==999) > { > b=i; > break; > } > } > int[] a2=new int[b+1]; > for(i=0;i<=b;i++) > { a2[i]=a1[i]; > } > String o="the array2 is "; > for(i=0;i<=b;i++) > { o=o+" "+a2[i]; > } > JOptionPane.showMessageDialog(null,o,"win",JOptionPane.INFORMATION_MESSAGE); > int temp=0; > int s=0; > for(s=0;s<=b;s++) > { > for(i=0;i<=b;i++) arr.main(arr.java:40)指的就是上面這一行, 它跟你說ArrayIndexOutOfException,也就是說陣列大小不符合 您輸入10, 20, 999,此時a1[0,1,2]就是10,20,999,因為到999就停了 所以此時b = i = 2; 接著您起始化一個a2[]陣列,大小為3(問題就在這裡了) 此時您複製a2[] = a1[] 然而在這個迴圈中,如果作到最後一次時,也就是i = b = 2時, 底下這行就掛了!因為a2[]陣列大小為3時,最大的是a2[2],如果硬塞a2[3]的話 就Error啦 這樣您瞭解了嗎? 要嘛,在宣告陣列時就宣告成a2 = new int[b+2]以爭取作swap的空間 (我記得寫泡泡排序好像有這麼一步,忘了,那已經是幾億年前的事了) > { if(a2[i]>a2[i+1]) > {temp=a2[i]; > a2[i]=a2[i+1]; > a2[i+1]=temp; > } > } > } > JOptionPane.showMessageDialog(null,"第二大為"+a2[b-1]+" "+"第二小為"+a2[1],"win",JOptionPane.INFORMATION_MESSAGE); > } > } -- ┌─────KKCITY─────┐ KKBOX歌名歌手歌詞專輯搜尋 bbs.kkcity.com.tw http://www.kkbox.com.tw └──From:61.62.107.41 ──┘ 超過80家唱片公司合法授權 音樂盡情下載 --
文章代碼(AID): #15QePa00 (java)
文章代碼(AID): #15QePa00 (java)