Выяснить, как форматировать печать

1

Мне трудно понять, как отформатировать мою печать от arraylist, я просто не знаю, как это сделать. Любые советы или фрагменты, которые могли бы помочь? спасибо

protected void printTable(ArrayList<double[]> table)
{
    String s = "";
    System.out.printf("\n_____________________________________________________\n");
    System.out.printf("\n  x\t   f[]\t    f[,]    f[,,]    f[,,,]   ");
    System.out.printf("\n_____________________________________________________\n");
    for(int a = 0; a < table.size(); a++)
    {
        System.out.printf("%.3s", s);
        for(double c : table.get(a))
        {
            System.out.printf("%.3f\t " , c);
        }
        System.out.println();
    }
}

его печать на данный момент:

    _____________________________________________________
    x      f[]      f[,]    f[,,]    f[,,,]   
    _____________________________________________________
    1.000    1.500   0.000   2.000   
    3.000    3.250   3.000   1.670   
    0.500    0.167   -0.665  
    0.333    -1.663  
    -1.997   

как мне это сделать?

_____________________________________________________

x      f[]      f[,]    f[,,]    f[,,,]   
_____________________________________________________
1.000    3.000   0.500   0.333   -1.997
1.500    3.250   0.167   -1.663  
0.000    3.000   -0.665  
2.000    1.670   
Теги:
arraylist
printf

3 ответа

2

Вы можете обосновать свои столбцы с помощью - flag

System.out.printf("%-.3f\t " , c);

И вы можете указать ширину (измените ширину 10 на то, что вы хотите)

System.out.printf("%-10.3f " , c);

Я бы предположил, что вы удаляете \t и скорее контролируете ширину, используя флаги ширины и точности (10.3 в приведенном выше примере)

Вы можете управлять порядком печати с использованием 2-мерного массива вместо массива ArrayList

double table [][];
  • 0
    спасибо, но как мне повернуть его?
  • 0
    Вместо ArrayList массивов вы можете использовать двумерный массив double [] []. Тогда вы можете более четко контролировать свои итераторы
0
protected void printTable(ArrayList<double[]> table)
{
    String s = "";
    System.out.printf("\n_____________________________________________________\n");
    System.out.printf("\n  x\t   f[]\t    f[,]    f[,,]    f[,,,]   ");
    System.out.printf("\n_____________________________________________________\n");
    for(int i = 0; i < table.size(); i++) {
        for(int a = 0; a < table.size(); a++)
        {
            if ( table.get(a).length > i ) {
                System.out.printf("%.3f\t " , table.get(a)[i]);
            }
        }
        System.out.println();
    }
}
0

Приведенный ниже код поворачивает матрицу для вашего сценария, но я только проверял матрицу nXn, вы должны иметь возможность выйти из нее.

    public void printTable(ArrayList<double[]> table)
{
    String s = "";
    System.out.printf("\n_____________________________________________________\n");
    System.out.printf("\n  x\t   f[]\t    f[,]    f[,,]    f[,,,]   ");
    System.out.printf("\n_____________________________________________________\n");
    int i =0;

    for(int a = 0; a < table.size(); a++)
    {
        System.out.printf("%.3s", s);
        for(int j= 0;j<table.size();j++){
            double[] d = table.get(j);

            for(int k =a;k<=a;k++){
                System.out.printf("%.3f\t " , d[k]);
            }
        }
        System.out.println();
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню