iT邦幫忙

0

(初學)Java 問題請教

  • 分享至 

  • xImage

各位大神好,想請教一下,下列程式哪裡有問題?
亂數都有正常產生,但在最後要列印陣列時,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

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
tryit
iT邦研究生 4 級 ‧ 2022-09-25 03:09:36
最佳解答

首先,請善用https://ithelp.ithome.com.tw/upload/images/20220925/201086491ZaCgrM6rZ.png增加程式碼,要不然真的超難看。
程式碼也最好提供完整的方便測試。

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]根本沒存到東西
以上就這樣吧,有問題再題問

我要發表回答

立即登入回答