格式化输出动态右对齐

/**
复制代码
* 用二维数组存3个月×每周订单量{{12,15,9,20},{...}},计算每月总量和季度总量 * <p> * 注意: * 1、二维数组 * 2、格式化输出动态右对齐 * 3、格式化输出固定占位右对齐,不足补0 * 4、String.format() * */ public class Day17OrderStatistics { // 季度每月订单量数组 private static final int[][] QUARTER_WEEKLY_ORDERS = {{12, 15, 9, 20}, {150, 250, 250, 450}, {300, 500, 800, 1200}}; public static void main(String[] args) { // 月订单总量数组,因为要获取月订单总量最大值,要每月统计完才能获取,是为了动态占位格式输出 int[] monthTotalOrders = new int[QUARTER_WEEKLY_ORDERS.length]; int quarterOrders = 0; // 季度订单总量 int maxMonthOrder = 0; // 定义最大月订单,动态设置占位空间 System.out.printf("%n%n---------------------计算每月订单总量和季度订单总量--------------------"); for (int i = 0; i < QUARTER_WEEKLY_ORDERS.length; i++) { int monthOrders = 0; //月订单总量 for (int j = 0; j < QUARTER_WEEKLY_ORDERS[i].length; j++) { monthOrders += QUARTER_WEEKLY_ORDERS[i][j]; } monthTotalOrders[i] = monthOrders; quarterOrders += monthOrders; // 季度订单总量 = 每月订单总量相加 // 获取月订单总量最大的数字 if (monthTotalOrders[i] > maxMonthOrder) { maxMonthOrder = monthTotalOrders[i]; } } // 获取预订单总量最大数字的长度,因为用千分位,所以要获取把最大数字转换成千分位格式后的长度 String maxStr = String.format("%,d",maxMonthOrder); // 准换成千位位的字符串 int width =maxStr.length(); // 获取千分位字符串的长度 String fmt = "%," + width + "d"; // 拼接格式化输出的格式,✅英文逗号,顺序:%, + 宽度 + d // 因为IDEA警告('printf()' call has a String concatenation argument ),尝试把格式化先拼接再在System.out里使用 String formatStr = "%n第 %02d 个月订单总量是:" + fmt + "单"; for (int i = 0; i < monthTotalOrders.length; i++) { System.out.printf(formatStr, i + 1, monthTotalOrders[i]); } System.out.printf("%n%n季度订单总量是:%,d 单", quarterOrders); } }
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP