-1
我對Java很陌生,正在編寫一個從2維數組中隨機選擇一個元素的方法。'隨機'返回值不在數組中?
這個想法是,你給它一個由52張卡片組成的2維數組(4套房中的13張卡片),然後你隨機選擇其中的4張並返回它們的總和。
該程序似乎大部分工作正常,但有時它會返回卡「鑽石0」。這不是我給這個方法的數組中的一個元素,所以不太確定這裏發生了什麼。
我會重現最下方的相關代碼:
int [][] cards = {{2,3,4,5,6,7,8,9,10,11,12,13,14},{2,3,4,5,6,7,8,9,10,11,12,13,14},
{2,3,4,5,6,7,8,9,10,11,12,13,14},{2,3,4,5,6,7,8,9,10,11,12,13,14}};
int num1 = randomPick(cards);
sum = sum+num1;
switch(num1){
case 11: System.out.print("Jack of "+ suite+", ");
break;
case 12: System.out.print("Queen of "+ suite+", ");
break;
case 13: System.out.print("King of "+ suite+", ");
break;
case 14: System.out.print("Ace of "+ suite+", ");
break;
default: System.out.print(num1+" of "+ suite+", ");
break;}
public static int randomPick(int[][] array){
int randrow = new Random().nextInt(array.length);
int randcol = new Random().nextInt(array[randrow].length);
switch (randrow){
// Each row corresponds to a different suite of cards
case 1:
suite= "spades";
break;
case 2:
suite = "hearts";
break;
case 3:
suite = "diamonds";
break;
case 0:
suite = "clubs";
break;
}
int element =array[randrow][randcol];
return(element);}
正如你可以看到0是不是傳遞給方法的數組中的元素,它是如何有時返回0?
您的一些示例代碼丟失 - 你粘貼不能編譯什麼。如果您共享[MCVE](https://stackoverflow.com/help/mcve),我們可以直接運行您的代碼並嘗試複製該問題。 – dimo414
卡片有「套裝」,而不是「套裝」。 –