[英]Simple Java program not printing anything
這是我第一次在這里發帖,如有錯誤請見諒。 我是 Java 的絕對初學者,我的任務是編寫“生日問題”。 它是這樣的:
假設人們一次進入一個房間。 人們必須如何進入直到兩個人共享生日? 編寫一個程序Birthday.java
,它需要兩個 integer 命令行 arguments n
並試驗並執行以下實驗,試驗次數:
為下一個人選擇一個生日,在0
和n−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.