带有for循环和格式的表

时间:2015-12-02 21:33:56

标签: java

    System.out.println("Year     StartBalance     Interest Earned      End Balance");
    for (int i = 1; i<Years+1; i++) { //table: year number, principal at beginning, total interest earned, principal at the end
        double AmountPerQuarter = (Principal * (1 + Rate/400));
        NewPrincipal = AmountPerQuarter;
        double InterestEarned = NewPrincipal - Principal;
        System.out.printf(i+ "%13s %15s %22s",Principal,InterestEarned,NewPrincipal);
        Principal = NewPrincipal;
    }

嗨,我是一名计算机科学专业的学生,​​在这个例子中我对格式有点困惑。

这应该做的是,在顶部创建带有Year,StartBalance等的表,然后将该段打印为一行,然后当循环重复时,它将开始一个新行,但是使用printf,循环所做的一切只是打印在一行上,这抵消了我试图用表做的事情。

例如,它最终会像:

Year   StartBalance     InterestEarned      Endbalance

1..........500................20............520252040580

而不是第二年开始新的一行。

另外,作为一个附带问题,当我使用&#34;%13s&#34;等格式时要创建13个空格,我怎样才能将它打印成四舍五入到两位小数?我知道&#34;%。2f&#34;是什么用的,但是我不确定如何将它们组合在一起,这样我就可以创建13个空格,并且数字带有舍入的十进制空格。

对不起,如果这似乎不清楚,我已经尝试过搜索,但无法找到答案。

谢谢!

2 个答案:

答案 0 :(得分:1)

要创建新行,您需要新行字符,可以通过添加\n或使用空白System.out.println("");(创建新行字符)来创建)。这是前者:

更改

System.out.printf(i+ "%13s %15s %22s",Principal,InterestEarned,NewPrincipal);

System.out.printf(i+ "%13s %15s %22s\n",Principal,InterestEarned,NewPrincipal);

答案 1 :(得分:0)

换行需要%n,整数也是%d。像

这样的东西
System.out.printf("%12d %13s %15s %22s%n", i, Principal, InterestEarned, 
        NewPrincipal);