我遇到了以下程式的問題:
public class PrimeFinder implements Runnable {
Thread go;
StringBuffer primes = new StringBuffer();
int time = 0;
public PrimeFinder() {
start();
while (primes != null) {
System.out.println(time);
try {
Thread.sleep(1000);
} catch (InterruptedException exc) {
// do nothing
}
time ;
}
}
public void start() {
if (go == null) {
go = new Thread(this);
go.start();
}
}
public void run() {
int quantity = 1_000_000;
int numPrimes = 0;
// candidate: the number than might be prime
int candidate = 2;
primes.append("\nFirst ").append(quantity).append(" primes:\n\n");
while (numPrimes < quantity) {
if (isPrime(candidate)) {
primes.append(candidate).append(" ");
numPrimes ;
}
candidate ;
}
System.out.println(primes);
primes = null;
System.out.println("\nTime elapsed: " time " seconds");
}
public static boolean isPrime(int checkNumber) {
double root = Math.sqrt(checkNumber);
for (int i = 2; i <= root; i ) {
if (checkNumber % i == 0) {
return false;
}
}
return true;
}
public static void main (String[] arguments) {
new PrimeFinder();
}
}
該程式將計算將所有素數列印到控制臺所需的時間。從 0 秒開始到 x(當程式完成時)
然后將列印 x 個素數(第 29 行:數量 = 1_000_000)。
然后將列印“經過的時間:x 秒
當我以較小的數量(例如:10)運行程式時,它將列印到“29”(第 10 個素數)。
我假設 eclipse 中存在一些限制,導致大量數字無法列印到控制臺。
編輯:恰好在 5572 處,控制臺的輸出將被清除,這是輸出:
你想看多少素數?5572
0 //這是程式運行的時間
前 5572 個素數:
已用時間:0 秒。
在此處復制和粘貼時,數字會保留下來,因此它只是從控制臺中消失了。
uj5u.com熱心網友回復:
您的控制臺輸出可能有限。在 Eclipse 中,必須...
視窗 > 首選項 > 運行/除錯 > 控制臺
取消選中限制控制臺輸出復選框。

uj5u.com熱心網友回復:
控制臺輸出列印在一行上,為以下行的 if 陳述句添加了“\n”:(41-46)
if (isPrime(candidate)) {
primes.append(candidate "\n").append(" "); //if candidate is prime, print # then space " "
numPrimes ;
}
candidate ;
}
現在垂直列印。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/334816.html
