Re: [問題] sort compiler過了 .. 執行不ok 大問栽
※ 引述《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家唱片公司合法授權 音樂盡情下載
--
java 近期熱門文章
PTT數位生活區 即時熱門文章