Я искал вокруг и не нашел здесь прецедента для этой конкретной проблемы. Процитированный, я рассмотрел следующие вопросы.Java: ошибка форматирования с использованием printf
using printf for multiple formats
Formatting using printf and format
Formatting problems using printf in java
Ниже я опишу фрагмент моего кода, где у меня возникли проблемы. Пожалуйста, имейте в виду, я пытаюсь понять выходы Efficiency лучше, и я изучает в то, почему некоторые входы вызывают там быть экспоненциальной, логарифмической, линейный рост, и т.д. и т.п. В любом случае ...
for (int i = 0; i < 5; i++) {
time = System.nanoTime();
tl.timeTrial(N);
elapsedTime = (System.nanoTime() - time)/BILLION;
System.out.print(N + "\t");
System.out.printf("%4.3f\t", elapsedTime);
if (i != 0) {
r = elapsedTime/previousTime;
System.out.printf("%3.2\t", r);
k = Math.log(r);
System.out.printf("%3.2\n", k);
}
else {
System.out.print("\n");
}
previousTime = elapsedTime;
N *= 2;
}
Отсюда я буду укажите несколько вещей.
System.out.printf("%4.3\t", elapsedTime);
компилируется и работает отлично. Однако, когда я попадаю в оператор if с r и k, я получаю ошибку во время выполнения, и я не понимаю, почему я понимаю, почему. Ошибка заключается в следующем:
Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = '4'
at java.util.Formatter.checkText(Formatter.java:2579)
at java.util.Formatter.parse(Formatter.java:2565)
at java.util.Formatter.format(Formatter.java:2501)
at java.io.PrintStream.format(PrintStream.java:970)
at java.io.PrintStream.printf(PrintStream.java:871)
at TimingLabClient.main(TimingLabClient.java:61)
Благодарим за помощь. Надеюсь, мне не удастся задать вопрос, на который я больше не могу найти ответ.
спасибо. Для тех, кто запутался в моих \ t и \ ns, он помогает с выходным форматом, который не обязательно должен быть идеальным.
N Time(sec) R K
8 0.723
16 5.760 7.964 2.075
32 47.098 8.176 2.101
Эта программа действительно собирается работать около 7 часов ...
У вас нет спецификатора формата. Вы действительно читали эти ссылки? Разве у вас нет ''% 4.3f "'? И почему есть '\ t'? Что это должно делать? Пожалуйста, прочитайте [приличный учебник] (http://docs.oracle.com/javase/tutorial/java/data/numberformat.html). –
Да, я действительно читаю эти ссылки. Я не заметил% 4.3f на первом printf, и это было законно плохо.Это мой первый раз, когда я использовал printf в java, и чтение этих других ссылок не давало мне большого понимания, поскольку я даже не понимал, что в исходном коде есть спецификатор формата. Спасибо, что указали это, хотя это должно исправить. –
Что меня смущает, так это то, что вы сделали это правильно в одном заявлении printf, кроме того, что вы не должны использовать вкладки. –