看板 java 關於我們 聯絡資訊
public class arrayEx1 { public static void main(String[] args) { int[] array = new int[52]; String[] array2 = new String[52]; for(int i=0;i<array2.length;i++){ if(i<13){ array2[i]="黑桃"+(i+1); }else if(i>=13 & i<26){ array2[i]="紅心"+(i-12); }else if(i>=26 & i<39){ array2[i]="方塊"+(i-25); }else if(i>=39 & i<52){ array2[i]="梅花"+(i-38); } }//第一part,產生52張有順序的撲克牌 for(int i=0;i<array.length;i++){ array[i]=(int)(Math.random()*52)+1; for(int j=0;j<i;j++){ if(array[i]==array[j]){ i--; break; } } }//第二part,產生亂數不重複的52個號碼 for(int i=0;i<52;i++){ System.out.println(array2[array[i]]); } } } 這是我寫的,簡單來講,第一part產生撲克牌,第二part產生亂數 我想要撲克牌參考亂數值print出來 (array2[array[i]]) 這種寫法可以嗎,有問了老師說可以這樣寫 但是我寫出來有錯耶,請問大家哪裡不對呢?? 問題主要在於第三part的寫法 錯誤訊息為 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 52 at tw.bawanlung.arrayEx1.main(arrayEx1.java:35) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.171.60.17 ※ 編輯: thekensg 來自: 1.171.60.17 (08/13 16:48)
PsMonkey:請補上錯誤訊息 08/13 16:50
PsMonkey:==" 剛推完...請搜尋 ArrayIndexOutOfBoundsException 08/13 16:51
謝謝大大的幫忙,但是理論上我沒有超出索引值呀?? 陣列1跟陣列2 都是52個元素,那應該可以跑52次 就算改成for(int i=0;i<52;i++) 也是錯耶 兩個陣列我都有各別RUN過迴圈都是52個值,不懂哪裡出錯 懇請高手大大幫忙 ※ 編輯: thekensg 來自: 1.171.60.17 (08/13 16:59)
PsMonkey:你怎麼知道 array[] 的東西一定都小於 52 08/13 17:02
cowbaying:你看一下35行是那個部份 08/13 17:13
abola921:int[] array = new int[52]; range: 0 ~ 51 08/13 17:19
謝謝各位大大,我知道錯在哪了,真的超出索引了SORRY!! ※ 編輯: thekensg 來自: 1.171.60.17 (08/13 17:20)
gmoz:把值跟長度印出來看就知道了 08/13 17:21
cowbaying:他0~51値有+1 08/13 17:24