У меня есть программа, которая подсчитывает количество букв в текстовом файле, и я хочу выход бытьstring.Format косяк частота высчитывает чисел Java
Letter Amount Freq
A 46 9.3456%
. . .
. . .
. . .
Z 2 0.0234%
И у меня есть этот код
System.out.println("Letter Amount Freq");
for(int i = 0; i < 26; i++){
System.out.println(String.format("%c %d\n %5f", i + 'A', count[i], (count[i]/totChar)*100 + "%"));
Я просто получаю это сообщение об ошибке:
Exception in thread "main" java.util.IllegalFormatConversionException: f != java.lang.String
Может кто-нибудь сказать, что не так?
EDIT для нового выхода:
Letter Amount Freq
A 46
9.234%
B 32
4.437%
. .
.
Так вот новый выход и, как вы видите частота не на той же линии, что и другие!
EDIT для нового кода:
System.out.println("Letter: Amount: Frequence:");
for(int i = 0; i < 26; i++){
System.out.println(String.format(" %c %d\n %f%%", i + 'A', count[i], (count[i]/totChar)*100));
'(count [i]/totChar) * 100 +"% "' приведет к строке. Используйте строку формата '" ...% 5f %% "и значение' (count [i]/totChar) * 100' вместо. Также обратите внимание, что если 'count' и' totChar' являются целыми типами, вы не получите желаемого результата, используйте '(count [i]/(double) totChar) * 100' в этом случае. – Thomas
спасибо @Thomas Это не приходит в том же ряду, что и другие сейчас, можно ли исправить? – JohnBanana
Я не знаю, о чем вы говорите, это должно быть в одной строке. Обратите внимание, что в строке формата я предположил, что «...» означает все, что у вас есть на переднем плане, - это не буквальное. – Thomas