各位大神好,想請教一下,下列程式哪裡有問題?
亂數都有正常產生,但在最後要列印陣列時,win[0]顯示都是 0
困擾許久,請大神們幫忙解惑
感激不盡
for (int i = 0; i < win.length; i++) {
win1 = 1 + (int) (Math.random() * 49);
System.out.printf("( %d ) ", win1);
for (int j = 0; j < i; j++) {
if (win1 == win[j]) {
i--;
break;
}
win[i] = win1;
}
}
for (int i = 0; i < win.length; i++)
System.out.printf(" %d ", win[i]);
印出結果:
( 41 ) ( 27 ) ( 9 ) ( 22 ) ( 31 ) ( 10 ) 0 27 9 22 31 10
首先,請善用增加程式碼,要不然真的超難看。
程式碼也最好提供完整的方便測試。
public class test{
public static void main(String[] args){
int[] win = new int[10];//隨便設了一個測試用,改成你要的東西
for (int i = 0; i < win.length; i++) {
int win1 = 1+(int)(Math.random() * 49);
System.out.printf("( %d ) ", win1);
for (int j = 0; j < i; j++) {//你注意一下這邊,當i=0時for根本不會執行到
if (win1 == win[j]) {
i--;
break;
}
System.out.printf("[%d]\n", i);//這邊讓你確認i用的
win[i] = win1;
}
}
for (int i = 0; i < win.length; i++)
System.out.printf(" %d ", win[i]);
}
}
簡單來說你win[0]根本沒存到東西
以上就這樣吧,有問題再題問