Вывод консоли в матричном формате

public class dataarrange {
    public static void main(String args[]) {
        try {
            PrintStream myconsole = new PrintStream(new File("D://out.txt"));
            for (int i = 0; i < 10; i++) {
                double a = Math.sqrt(i);
                int b = 10 + 5;
                double c = Math.cos(i);
                myconsole.print(a);
                myconsole.print(b);
                myconsole.print(c);
            }
        } catch (FileNotFoundException ex) {
            System.out.println(ex);
        }
    }
}

В этом программном коде я создаю текстовый файл с именем out, куда записываю вывод dataarrange class. В коде нет ошибок. В соответствии с кодом мы получаем a,b,c 10 раз. Я систематически записываю значение в текстовый файл. Текстовый файл должен выглядеть как матрица, состоящая из 10 строк и 3 столбцов. Но когда я открываю текстовый файл out.txt, все данные находятся в разбросанном виде. Они записываются в виде строки, а не в виде матрицы.

Желаемый результат:

a    b    c

val1 val2 val3

val4 val5 val6

val7 val8 val9

So on...

Но получение вывода val1 val2 val3 val4 val5 val6. Как я могу решить эту проблему?


person Encipher    schedule 05.05.2018    source источник
comment
String.format - Может быть, что-то вроде это, например, пример   -  person MadProgrammer    schedule 05.05.2018
comment
документацияprintln() для перехода к следующей строке , а еще лучше printf(...) отформатировать и распечатать (это String.format вместе с print)   -  person user85421    schedule 05.05.2018
comment
Вам нужно выровнять все столбцы? Или просто распечатать их с пробелами между ними?   -  person Dawood ibn Kareem    schedule 05.05.2018
comment
Пожалуйста, придерживайтесь соглашений об именах. Имена классов всегда должны начинаться с символа верхнего регистра, а затем с верблюжьего регистра. Так что DataRange вместо этого.   -  person Zabuzard    schedule 05.05.2018
comment
Возможно, связано: Как я могу создать таблицу, используя ASCII в консоли?   -  person Pshemo    schedule 05.05.2018


Ответы (2)


Вы также можете использовать escape-последовательности \n \t, но предпочтительнее использовать приведенный выше ответ с форматированной строкой.

пакетный тест;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintStream;

public class DataRange {
    public static void main(String args[]) {

        try {
            PrintStream myconsole = new PrintStream(new File("out.txt"));
            for (int i = 0; i < 10; i++) {
                double a = Math.sqrt(i);

                int b = 10 + 5;
                double c = Math.cos(i);
                System.out.print("\t" + a);
                myconsole.print("\t" + a);
                System.out.print("\t" + b);
                myconsole.print("\t" + b);
                System.out.print("\t" + c);
                myconsole.print("\t" + c);
                myconsole.print("\n");
                System.out.println("\n");
                System.out.println("Completed");
            }
        } catch (FileNotFoundException ex) {
            System.out.println(ex);
        }
    }
}
person Sanjay A    schedule 05.05.2018

Использование этого в цикле for выровняет столбцы:

 double a = Math.sqrt(i);
 int b=10+5;
 double c=Math.cos(i);
 myconsole.printf("%10f %10d %10f", a, b, c);
 myconsole.println();

Выход:

  0.000000         15   1.000000
  1.000000         15   0.540302
  1.414214         15  -0.416147
  1.732051         15  -0.989992
  2.000000         15  -0.653644
  2.236068         15   0.283662
  2.449490         15   0.960170
  2.645751         15   0.753902
  2.828427         15  -0.145500
  3.000000         15  -0.911130
person Jagrut Sharma    schedule 05.05.2018
comment
Зачем использовать отдельный вызов println, если можно просто добавить %n в конец строки формата, т. е. myconsole.printf("%10f %10d %10f%n", a, b, c);? - person Andreas; 05.05.2018
comment
Конечно. Интервал столбцов в одном операторе и добавление новой строки в конце для меня немного более читабельны. Однако использование %n более лаконично. - person Jagrut Sharma; 05.05.2018