#java #eclipse
Вопрос:
У меня была проблема со следующей программой:
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:nn");
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 секунд.
при копировании и вставке сюда номера переносились, поэтому он просто исчез с консоли.
Комментарии:
1. Также обратите внимание, что это создает одну очень длинную строку, которая консоли не очень нравится.
Ответ №1:
Выход вашей консоли, вероятно, ограничен. В Затмении, должно быть…
Окно > Настройки >> Запуск/Отладка >>> Консоль
Снимите флажок Ограничить вывод консоли.
Комментарии:
1. Не решил эту конкретную проблему, но вызвал бы свою собственную отдельную проблему, спасибо!
Ответ №2:
вывод консоли печатался в одной строке, добавлено «n» для оператора if в строках: (41-46)
if (isPrime(candidate)) {
primes.append(candidate "n").append(" "); //if candidate is prime, print # then space " "
numPrimes ;
}
candidate ;
}
Теперь печатает вертикально.