簡體   English   中英

簡單的 Java 程序不打印任何東西

[英]Simple Java program not printing anything

這是我第一次在這里發帖,如有錯誤請見諒。 我是 Java 的絕對初學者,我的任務是編寫“生日問題”。 它是這樣的:

假設人們一次進入一個房間。 人們必須如何進入直到兩個人共享生日? 編寫一個程序Birthday.java ,它需要兩個 integer 命令行 arguments n並試驗並執行以下實驗,試驗次數:

為下一個人選擇一個生日,在0n−1之間均勻隨機。 讓那個人進入房間。 如果該人與房間里的其他人共享生日,請停止; 否則重復。 在每個實驗中,計算進入房間的人數。 打印一個表格,總結從1到分數達到的每個可能值i的結果(計數i 、恰好i人進入房間的次數以及i或更少人進入房間的次數) (或超過)50%。

問題是,我的代碼沒有打印任何東西。 它正在正常編譯並且沒有顯示任何錯誤,但是當我嘗試運行它時,它只是沒有顯示任何 output 並且我已經沒有關於如何改進它的想法。 命令行 arguments 的示例以及 output 的外觀:圖片

這是我的代碼:

public class Birthday {

    public static void main(String[] args) {

        int n = Integer.parseInt(args[0]);
        int trials = Integer.parseInt(args[1]);
        boolean[] birthdays = new boolean[n];
        int[] visits = new int[n + 2];
        int cumsum = 0;
        int k = 1;

        for (int i = 1; i <= trials; i++) {
            for (int j = 0; j < n; j++) {
                birthdays[j] = false;
            }
            for (k = 1; k <= n; k++) {
                int r = (int)(Math.random() * (n - 1));

                if (birthdays[r] == false) {
                    birthdays[r] = true;
                    continue;
                } else
                if (birthdays[r] == true) {
                    visits[k]++;
                    cumsum += visits[k];
                    break;
                }
            }
        }

        int l = 1;

        while ((double)(cumsum / trials) <= 0.5) {
            System.out.print(l + "(\t)" + visits[k] + "(\t)" + ((double) cumsum / trials));
            l++;
            System.out.println("");
        }
    }
}      

由於您現在希望看到但沒有得到它們的語句都在您的 while 循環中,您應該將注意力集中在 while 循環如何/何時執行上。 正如其他人已經建議的那樣,這實質上意味着查看情況。

只是為了檢查您的代碼是否能夠打印,您可以添加一個打印語句,它將無條件運行。 例如在程序開始時,或在進入 while 循環之前。

為了專注於條件,查看用於決定循環的變量值可能會很有趣,所以無論如何我都會在循環之前和內部添加打印語句。 如果您正確地執行此操作,您甚至不需要調試您的代碼。

最后同樣重要的是,學習如何在小型項目中調試代碼肯定會幫助您處理大型項目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM