如何对齐输出结果

原代码:

public class Fibonacci
{
    public static void main(String[] args)
    {
        int F[] = new int[30];
        F[0] = 1;
        F[1] = 1;
        for (int i = 2; i < 30; i++)
        {
            F[i] = F[i - 1] + F[i - 2];
        }
        for (int i = 0; i < 30; i++)
        {
            System.out.print(F[i]);
            System.out.print(" ");
            if ((i+1) % 6 == 0)
            {
                System.out.println();
            }
        }
    }
}

原输出结果:
在这里插入图片描述

目标输出结果:
在这里插入图片描述


问题分析

原代码使用System.out.print(F[i] + " ")输出,由于斐波那契数列数值位数逐渐增加(如第30项为6位数的832040),导致输出无法对齐。


解决方案

使用格式化输出控制每个数字的显示宽度,通过printf方法配合格式说明符%NdN为固定宽度)实现右对齐。
数字前面加个负号实现左对齐

步骤说明
  1. 确定最大位数:数列第30项是832040(6位),因此设置固定宽度为6
  2. 替换输出方法:用System.out.printf("%6d", F[i])替代原有输出,确保每个数字占据6字符宽度。
  3. 移除多余空格:格式化输出已包含对齐,无需额外添加空格。
  4. 保留换行逻辑:每输出6个数字后换行。

优化后的代码

public class Fibonacci {
    public static void main(String[] args) {
        int F[] = new int[30];
        F[0] = 1;
        F[1] = 1;
        for (int i = 2; i < 30; i++) {
            F[i] = F[i - 1] + F[i - 2];
        }
        for (int i = 0; i < 30; i++) {
            System.out.printf("%6d", F[i]); // 格式化为6字符宽度
            if ((i + 1) % 6 == 0) {
                System.out.println(); // 每6个换行
            }
        }
    }
}

输出效果

     1      1      2      3      5      8
    13     21     34     55     89    144
   233    377    610    987   1597   2584
  4181   6765  10946  17711  28657  46368
 75025 121393 196418 317811 514229 832040

关键点解释

  • %6d的作用:强制每个数字占6字符宽度,不足部分左侧补空格,实现右对齐。
  • 换行逻辑(i + 1) % 6 == 0确保每行显示6个数字后换行。
  • 适用性:此方法适用于数值位数不超过设定宽度的情况(本例中6位足够)。

通过这种方式,输出结果将严格按列对齐,便于阅读。


补充

方法名错误:System.out.print 不支持格式化字符串(如 %6d),应使用 printf 方法。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pniubi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值