Java循环打印数组生成对齐表格的问题求助
Java 循环生成对齐表格解决方案
问题根源
直接使用\t制表符对齐会因为内容长度不一致导致错位——制表符是跳转到固定间隔的制表位,而非根据内容动态补空格。要实现稳定对齐,需用固定宽度的格式化输出。
修改后的代码
case 2: // 表头:用printf格式化,指定每列宽度和对齐方式 System.out.printf("%-15s %-12s %-25s %-15s %-25s%n", "Stock Name", "Stock Symbol", "Previous Closing Price", "Current Price", "Change Percent"); for (int i = 0; i < 3; i++) { // 修正:每行计算对应股票的变化百分比(原代码传整个数组逻辑错误) double changePercent = GetChangePercent(CurrentPrice[i], PreviousClosingPrice[i]); // 格式化每行内容,左对齐+固定宽度补空格 System.out.printf("%-15s %-12s %-25.2f %-15.2f %-25f%n", stockNameList[i], stockSymbol[i], PreviousClosingPrice[i], CurrentPrice[i], changePercent); } break; // 补充case语句的break(原代码缺失)
格式化规则说明
%-15s:左对齐(-表示左对齐,默认右对齐),占用15个字符宽度的字符串,内容长度不足时用空格补全%-25.2f:左对齐,占用25个字符宽度的浮点数,保留2位小数(若需更多小数位数,可修改.2为.8等)%n:跨平台换行符,替代\n保证在不同系统下输出一致
额外提示
原代码中GetChangePercent(CurrentPrice, PreviousClosingPrice)存在逻辑问题——传入整个数组会导致所有行的变化百分比相同,应改为传入当前循环对应的单个元素CurrentPrice[i]和PreviousClosingPrice[i]。
内容的提问来源于stack exchange,提问作者PP-M_
相关产品推荐
相关产品推荐

