簡體   English   中英

如何在java txt文件中打印列

[英]how to print columns in java txt file

我試圖在一個.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個字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM