如何在java txt文件中打印列

我试图在一个.txt文件上打印多个数组有一个数组打印然后有另一列crated和另一个数组打印如何格式化这个工作?

我不记得格式化命令要做到这一点我需要所有列目前对齐我有这个

private static void makeFile(String[] name, String[] nickname, String[] capital, String[] flowers, String[] population) throws FileNotFoundException { PrintWriter out = new PrintWriter ("out.txt"); for (int i = 0; i< 50 ; i++) out.println( name[i] +" \t "+ nickname[i] ); out.close(); } 

这就是印刷品

在此处输入图像描述

我如何修复它所以它们都是对齐的,还有3个列要添加到这个如何让它们对齐?

你应该使用String.format类的

 String.format("%-30s %s", name[i], nickname[i]) 

其中30是名称的最大长度。

您可以使用printf而不是println ,使用C样式的格式字符串。

 out.printf("%-16s%-24s\n", name[i], nickname[i]); 

这将在16个字符的占位符中打印name[i]左对齐,然后在24个字符的宽列中打印nickname[i] 。 添加更多列时,可以指定格式字符串中所需的最大字符数。 添加了-符号以将字符串对齐到左侧。

你可以这样做

 // Get the maximum length of any string in the array, or 0. private static int getMaxLength(String[] in) { int c = 0; if (in != null && in.length > 0) { for (String i : in) { i = (i != null) ? i.trim() : ""; if (i.length() > c) { c = i.length(); } } } return c; } // Pad any input string to the minimum length. private static String padString(String in, int min) { in = (in != null) ? in.trim() : ""; StringBuilder sb = new StringBuilder(in); while (sb.length() < min) { sb.append(' '); } return sb.toString(); } private static void makeFile(String[] name, String[] nickname, String[] capital, String[] flowers, String[] population) { PrintWriter out = null; try { out = new PrintWriter("out.txt"); // Add 1 to get at least 1 space between the maximum and the next item. int namePadded = getMaxLength(name) + 1; int nickPadded = getMaxLength(nickname) + 1; int capitalPadded = getMaxLength(capital) + 1; int flowersPadded = getMaxLength(flowers) + 1; int populationPadded = getMaxLength(population); for (int i = 0; i < name.length; i++) { out.println(padString(name[i], namePadded) + padString((nickname.length > i) ? nickname[i] : "", nickPadded) + padString((capital.length > i) ? capital[i] : "", capitalPadded) + padString((flowers.length > i) ? flowers[i] : "", flowersPadded) + padString((population.length > i) ? population[i] : "", populationPadded)); } } catch (FileNotFoundException fnfe) { fnfe.printStackTrace(System.err); } finally { out.close(); } } public static void main(String[] args) { String[] name = { "Alabama", "Alaska", "Arizona" }; String[] nickname = { "Yellowhammer State", "Last Frontier", "Grand Canyon State" }; String[] capital = { "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "Y", "Z" }; String[] flowers = { "Rose", "Carnation", "Orchid" }; String[] population = { "1", "100", "1000" }; makeFile(name, nickname, capital, flowers, population); } 

你遇到的问题是有些名称比标签大,所以列变得混乱,尝试使用两个\ ts代替。 例如,一个选项卡是8个字符,因此任何更多的选项卡都将位于不同的选项卡上,而不是8个字符。