Таблицы на Java

Public class Lab3  { 
    public static void main(String[] args) { 
        System.out.println("1 задание: ");
        String format = "|%1$-12s|%2$-12s|%3$-12s|\n";
        System.out.format(format, "------------", "------------", "------------");
        System.out.format(format, "   Sin(x)", "e^x/x*lg(x)", "     x");
        for(double x= Math.PI/15;x<Math.PI;x+=Math.PI/15) { 
            System.out.format(format,Math.sin(x),Math.exp(x)/(x*Math.log(x)),x);
            System.out.format(format, "------------", "------------", "------------");
         } 
     } 
 } 

Хочу сделать простенькую табличку, которая выводит значения sin(x), (e^x)/(xlg(x)) и сам x. Но после запятых слишком много цифр. Хочу настроить формат для этих выражений sin(x),(e^x)/(xlg(x)) и x,но не понимаю как. Пробовал писать внутри System.out.format printf для каждого из выражений и формат "%.10f",но выводит неправильно. Недавно начал изучать Java,поэтому туплю сижу.


Ответы (2 шт):

Автор решения: Nowhere Man

Для вывода чисел с плавающей точек с заданной шириной следует использовать форматы:

  • %11f | - общая ширина числа 11, включая знак и десятичную точку/запятую, и 6 знаков после запятой по умолчанию
  • %11.7f | - общая ширина числа 11, 7 знаков после запятой
  • %12.8f| - общая ширина числа 12, 8 знаков после запятой (минус один пробел)
for (double x = Math.PI/15; x < Math.PI; x += Math.PI/15) { 
    System.out.format("|%11f |%11.7f |%12.8f|%n", Math.sin(x), Math.exp(x)/(x*Math.log(x)), x);
    System.out.format(format, "------------", "------------", "------------");
} 

Получится такая таблица:

|------------|------------|------------|
|   Sin(x)   |e^x/x*lg(x) |     x      |
|------------|------------|------------|
|   0.207912 | -3.7657531 |  0.20943951|
|------------|------------|------------|
|   0.406737 | -4.1708308 |  0.41887902|
|------------|------------|------------|
|   0.587785 | -6.4197073 |  0.62831853|
|------------|------------|------------|
...
|   0.207912 |  5.9501124 |  2.93215314|
|------------|------------|------------|
|   0.000000 |  6.4346282 |  3.14159265|
|------------|------------|------------|
→ Ссылка
Автор решения: Arty Morris

Можно форматировать при выводе

textview.setText(String.format("%.1f %s", переменная, текст));

Можно только переменную

textview.setText(String.format("%.1f", переменная));

здесь .1 - число после знаков

→ Ссылка