【问题标题】:Aligned output from arraylist Java [duplicate]来自arraylist Java的对齐输出[重复]
【发布时间】:2021-01-06 14:12:07
【问题描述】:

我是Java新手,我只是想问一下如何从arraylist输出数据,格式如下:

CustomerNo      Name            PhoneNo            Status
         1       Ali         0177788901         Normal

我尝试了很多方法,例如“/t”:

for(int i = 0; i <= formatCus.size()-1; i++){
            System.out.printf(formatCus.get(i) + "\t");
         }
         System.out.println("");
        for(int i = 0; i <= cusData.size()-1; i++){
            System.out.print(cusData.get(i) + "\t");
         }

还有“%15d”:

for(int i = 0; i <= formatCus.size()-1; i++){
            System.out.printf("%15d",formatCus.get(i));
         }
         System.out.println("");
        for(int i = 0; i <= cusData.size()-1; i++){
            System.out.printf("%15d",cusData.get(i));
         }

但他们没有工作,所以我想寻求帮助。 感谢您的关注。

【问题讨论】:

  • 您也应该在 System.out.print(cusData.get(i) + "\t"); 中使用 printf;
  • String 类的格式方法为您提供了一种不同的方式来构造列对齐的输出行。 %20s 右对齐一个字符串,而 %-20s 左对齐一个字符串。
  • 看起来您将数据存储为一袋项目而不是一个适当的类。这会使您的任务变得不必要地困难。
  • 不知道为什么您希望phoneNumber 列与CustomerNoName 列的对齐方式不同?
  • @chrylis-cautiouslyoptimistic- 如何将我的数据存储为适当的类?如果需要,我可以将我的数据发送给您。

标签: java arraylist output


【解决方案1】:

正如 cmets 中所述,您应该将每个客户真正存储在 class 中,无论如何,根据您当前的尝试,这是一个脆弱的解决方案:

import java.util.List;

public class Main {
    private static final String COLUMN_FORMAT = "%15s";

    public static void main(String[] args) {
        List<String> columnNames = List.of("CustomerNo", "Name", "PhoneNo", "Status");
        List<String> customerData = List.of("1", "Ali", "0177788901", "Normal",
                                            "2", "Bill", "0277788901", "Good");
        for (String column : columnNames) {
            System.out.printf(COLUMN_FORMAT, column);
        }
        System.out.println();
        for (int i = 0; i < customerData.size(); i += 4) {
            for (int j = i; j < i + 4; j++) {
                System.out.printf(COLUMN_FORMAT, customerData.get(j));
            }
            System.out.println();
        }
    }
}

输出:

 CustomerNo           Name        PhoneNo         Status
          1            Ali     0177788901         Normal
          2           Bill     0277788901           Good

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-11
    • 2015-12-29
    • 1970-01-01
    • 2017-11-12
    • 2012-03-31
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多