LillyLeaf Ответов: 1

Как установить форматирование в java? Пожалуйста, помогите мне.


Мне нужно сделать стол, который будет немного похож на тот, что внизу. Я не совсем уверен, что не так с моим кодированием. Я получаю странные ошибки, когда выполняю его. Пожалуйста, помогите мне! Большое вам спасибо за то, что нашли время прочитать мой беспорядок. :)

ошибки:
Исключение в потоке "main" java.util.IllegalFormatConversionException: d != java.lang.Двойной
в java.base/java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4426)
в java.base/java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2938)
в java.base/java.util.Formatter$FormatSpecifier.print(Formatter.java:2892)
в java.base/java.util.Formatter.format(Formatter.java:2673)
в java.base/java.io.PrintStream.format(PrintStream.java:1053)
в java.base/java.io.PrintStream.printf(PrintStream.java:949)
at Temptable.main(Temptable.java:23)


| V= 5 V=10 V=15 V=20 V=25 V=30 V=35 V=40 V=45 V=50
--------------------------------------------------------------------------------
Т = -20 | -34.0 -40.7 -45.0 -48.2 -50.8 -53.0 -54.9 -56.6 -58.1 -59.5
Т = -15 | -28.1 -34.5 -38.6 -41.7 -44.1 -46.2 -48.1 -49.7 -51.1 -52.4
Т = -10 | -22.3 -28.3 -32.2 -35.1 -37.5 -39.4 -41.2 -42.7 -44.1 -45.3
Т = -5 | -16.4 -22.1 -25.8 -28.6 -30.8 -32.7 -34.3 -35.7 -37.0 -38.2
Т = 0 | -10.5 -15.9 -19.4 -22.0 -24.1 -25.9 -27.4 -28.8 -30.0 -31.1
Т = 5 | -4.6 -9.7 -13.0 -15.4 -17.4 -19.1 -20.5 -21.8 -23.0 -24.0
Т = 10 | 1.2 -3.5 -6.6 -8.9 -10.7 -12.3 -13.6 -14.8 -15.9 -16.9
Т = 15 | 7.1 2.7 -0.2 -2.3 -4.0 -5.5 -6.8 -7.9 -8.9 -9.8
Т = 20 | 13.0 8.9 6.2 4.2 2.6 1.3 0.1 -0.9 -1.8 -2.7
Т = 25 | 18.9 15.1 12.6 10.8 9.3 8.1 7.0 6.1 5.2 4.4
Т = 30 | 24.7 21.2 19.0 17.4 16.0 14.9 13.9 13.0 12.2 11.5
Т = 35 | 30.6 27.4 25.4 23.9 22.7 21.7 20.8 20.0 19.3 18.6
Т = 40 | 36.5 33.6 31.8 30.5 29.4 28.5 27.7 26.9 26.3 25.7

Что я уже пробовал:

импорт java.util.Сканер;
публичный класс соблазнительный
{
публичный статический пустота главный(строка[] аргументы)
{
System.out.println("на самом деле это не титульная штука");

Системы.из.печать(" ");

для(int v = 5; v <= 50; v+=5)
System.out.print(" " + "V=" + v);

Системы.из.код println("\п--------------------------------------------------------------------------------------");

для (int t = -20; t <= 40; t+=5)
{
System.out.print ("T=" + t + " | ");
для (int v = 5; v <= 50; v+=5)
{
двойное уравнение = 35.74 + (0.6215 * Т) - (35.75 * математика.военнопленных(в, 0.16)) + (0.4275 * Т * математика.военнопленных(в, 0.16));
System.out.printf("%4d%2f", уравнение);
}
Системы.из.код println();
}
}
}

1 Ответов

Рейтинг:
11

Catey Category

Чтение исключения, которое выбрасывает ваш код, показывает, что у него есть проблемы с преобразованием вашего двойника в "%d", который является десятичным целым числом. Вполне логично, что двойник-это не целое число.

Видеть этот учебник от Oracle.

Если я заменю;

System.out.printf("%4d%2f", equation);

с:
System.out.printf("%.1f ", equation);


Он работает так, как и ожидалось для меня, и дает результат, который вы показываете в своем вопросе.

Надеюсь, это вам поможет. Овации.

ОБНОВЛЕНИЕ:

Вы можете сделать его более аккуратным с помощью метода "заливки", который заменяет строку предустановленных символов(String chr) входной строкой (String msg). Существует множество возможностей, таких как использование JFrame(окна) и JTable для отображения результата. Но это для вас, чтобы попробовать.

public static void main(String[] args)
{
	System.out.println("not actually a title thingy");
	System.out.print(" ");
	for(int v = 5; v <= 50; v+=5)
	System.out.print(" " + "V= " + v);
	System.out.println("\n--------------------------------------------------------------------------------------");
		
	for (int t = -20; t <= 40; t+=5)
	{
		System.out.print( fill("T = " + t + " | ","           ") );
		for (int v = 5; v <= 50; v+=5)
		{
			double equation = (35.74 + (0.6215 * t) - (35.75 * Math.pow(v, 0.16)) + (0.4275 * t * Math.pow(v, 0.16)));
			String res = String.format("%.1f ", equation);
			System.out.printf( fill(res, "        ") );
		}
		System.out.println();
	}
}

public static String fill(String msg, String chr) 
{
	String res = "";
	int leng = chr.length();
	for (int s=0; s<leng; s++) res += chr;
	String concat = msg+res;
	return concat.substring(0, leng);
}


LillyLeaf

Большое вам спасибо за помощь! Ты просто чудо!!! Так круто!!! :) Цифры действительно появляются! но как мне сделать так, чтобы он выглядел чище?.. таким образом, что они как бы выстраивались в линию друг с другом.

Catey Category

Конечно же, возьмите бабло на обновление моего решения.

LillyLeaf

Большое спасибо! Ты удивительная. :Д

Catey Category

Спасибо, удачи вам с вашим приложением. :)