如何对齐我的数组以使它看起来不那么糟糕?
换句话说,如何格式化可读的表?
System.out.print(" ");
是一种非常低效的表格间距方式......
public class TaylorSin {
public static void main(String[] args ) {
double[][] ArrayX = new double[201][4];
for (int i = 0; i < ArrayX.length; i++) {
System.out.print(ArrayX[i][0] = - 1 + (i * 0.01));
System.out.print(" ");
System.out.print(ArrayX[i][1] = Math.sin(- 1 + (i * 0.01)));
System.out.print(" ");
System.out.print(ArrayX[i][2] = taylorSin(- 1 + (i * 0.01)));
System.out.print(" ");
System.out.print(ArrayX[i][3] = Math.abs(Math.sin(- 1 + (i * 0.01)) - taylorSin(- 1 + (i * 0.01))));
System.out.println();
}
}
public static int calculateFactorial(int n)
{
int facto = 1;
for (int i = 1; i <= n; i++)
{facto = facto * i;}
return facto;
}
public static double calculateExponent(double base, int exponent)
{
if(exponent == 0){return 1;}
else {return base * calculateExponent(base, exponent - 1);}
}
public static double calculateTerm(double base, int exponent, int n)
{
double term = 0.0;
term = (calculateExponent(base, exponent)/calculateFactorial(n));
return term;
}
public static double sumOfTerms(double base, int exponent, int n)
{
double summation = 0;
for (int i = 1; i <= 21; i = i +2)
{
if (i == 3 || i == 7 || i == 11 || i == 15 || i == 19)
{
summation = summation - calculateTerm(base, i, i);
}
else
{
summation = summation + calculateTerm(base, i, i);
}
}
return summation;
}
public static double taylorSin(double base)
{
double result = 0;
int exponent = 1;
int n = 1;
result = sumOfTerms(base, exponent, n);
return result;
}
}
答案 0 :(得分:2)
您可以使用System.out.printf格式化输出,如下所示:
public class TaylorSin {
public static void main(String[] args)
{
// How to align my Array so it does not look that awful?
// In other words, How do I format a table that is readable?
// The System.out.print(" "); is a pretty inefficient manner for spacing
// for a table...
double[][] ArrayX = new double[201][4];
for (int i = 0; i < ArrayX.length; i++)
{
System.out.printf("%-15f", ArrayX[i][0] = -1 + (i * 0.01));
System.out.print(" ");
System.out
.printf("%-15f", ArrayX[i][1] = Math.sin(-1 + (i * 0.01)));
System.out.print(" ");
System.out.printf("%-15f",
ArrayX[i][2] = taylorSin(-1 + (i * 0.01)));
System.out.print(" ");
System.out.printf(
"%-15f",
ArrayX[i][3] = Math.abs(Math.sin(-1 + (i * 0.01))
- taylorSin(-1 + (i * 0.01))));
System.out.println();
}
}
public static int calculateFactorial(int n)
{
int facto = 1;
for (int i = 1; i <= n; i++)
{
facto = facto * i;
}
return facto;
}
public static double calculateExponent(double base, int exponent)
{
if (exponent == 0) {
return 1;
}
else {
return base * calculateExponent(base, exponent - 1);
}
}
public static double calculateTerm(double base, int exponent, int n)
{
double term = 0.0;
term = (calculateExponent(base, exponent) / calculateFactorial(n));
return term;
}
public static double sumOfTerms(double base, int exponent, int n)
{
double summation = 0;
for (int i = 1; i <= 21; i = i + 2)
{
if (i == 3 || i == 7 || i == 11 || i == 15 || i == 19)
{
summation = summation - calculateTerm(base, i, i);
}
else
{
summation = summation + calculateTerm(base, i, i);
}
}
return summation;
}
public static double taylorSin(double base)
{
double result = 0;
int exponent = 1;
int n = 1;
result = sumOfTerms(base, exponent, n);
return result;
}
}
答案 1 :(得分:1)
使用java.io.PrintStream.printf( format , data... )格式化打印
格式字符串在Format string syntax
中描述您可以使用的标记格式为width
:%-20s
或%12.4f
答案 2 :(得分:0)
试试这个。此外,如果可以这样做,您可能需要格式化数字。
{
System.out.print(ArrayX[i][0] = - 1 + (i * 0.01));
System.out.print("\t");
System.out.print(ArrayX[i][1] = Math.sin(- 1 + (i * 0.01)));
System.out.print("\t");
System.out.print(ArrayX[i][2] = taylorSin(- 1 + (i * 0.01)));
System.out.print("\t");
System.out.print(ArrayX[i][3] = Math.abs(Math.sin(- 1 + (i * 0.01)) - taylorSin(- 1 + (i * 0.01))));
System.out.print("\t");
System.out.println("\n");
}
答案 3 :(得分:0)
您可以使用Java的内置System.out.println()并查看Formatter类。你可以这样做。
System.out.printf("%f %f %f %f\n", ArrayX[i][0], ArrayX[i][1], ArrayX[i][1], ArrayX[i][2], ArrayX[i][3]);