如何对齐 Java 中的数字

How to align numbers in Java

所以我想将显示第十年的行与其余数字对齐。 我试过 printf 但它似乎不起作用。 我已经看过很多帖子,但似乎一切都在使用某些字符串格式围绕 printf 漫游。 如果你能用一些例子向我解释如何做到这一点,那将对我有很大帮助。 感谢您的帮助。

public class Foo {

    public static void main(String[] args) {
        double capitalDeDepart = capitalDepart(0);
        double tauxInteretAnnuel = interetAnnuel(0);
        double anneeTotalPlacement = dureePlacement(0);
        affichage();
        calcul(capitalDeDepart, tauxInteretAnnuel, anneeTotalPlacement);
    }

    public static double capitalDepart(double capitalDeDepart) {
        Scanner clavier = new Scanner(System.in);
        System.out.print("Indiquez le capital de départ : ");
        capitalDeDepart = clavier.nextDouble();
        return capitalDeDepart;
    }

    public static double interetAnnuel(double tauxInteretAnnuel) {
        Scanner clavier = new Scanner(System.in);
        System.out.print("Inscrivez le taux d'intérêt annuel : ");
        tauxInteretAnnuel = clavier.nextDouble();
        return tauxInteretAnnuel;
    }

    public static double dureePlacement(double anneeTotalPlacement) {
        Scanner clavier = new Scanner(System.in);
        System.out.print("Indiquez la durée du placement en années : ");
        anneeTotalPlacement = clavier.nextDouble();
        return anneeTotalPlacement;
    }

    public static void affichage() {
        System.out.println("Année    Capital    Intérêt    Nouveau capital");
        System.out.println("----------------------------------------------");
    }

    public static void calcul(double capitalDeDepart, double tauxInteretAnnuel, double anneeTotalPlacement) {
        int annee = 0;
        double interet = 0;
        double nouveauCapital = 0;
        double tauxEnDecimal = 0;

        do {
            annee++;
            capitalDeDepart = capitalDeDepart + interet;
            tauxEnDecimal = tauxInteretAnnuel / 100;
            interet = capitalDeDepart * tauxEnDecimal;
            nouveauCapital = (int)(capitalDeDepart + interet);
            System.out.println("    " + annee + "     " + (int)capitalDeDepart + "$      " + (int)interet + "$             " + (int)nouveauCapital + "$");

        } while (annee != anneeTotalPlacement);
    }
}

Indiquez le capital de départ : 10000 Inscrivez le taux d'intérêt annuel : 10 Indiquez la durée du placement en années :

Année    Capital    Intérêt    Nouveau capital
----------------------------------------------
    1     10000$      1000$             11000$
    2     11000$      1100$             12100$
    3     12100$      1210$             13310$
    4     13310$      1331$             14641$
    5     14641$      1464$             16105$
    6     16105$      1610$             17715$
    7     17715$      1771$             19487$
    8     19487$      1948$             21435$
    9     21435$      2143$             23579$
    10     23579$      2357$             25937$

您必须尝试添加一个字符串变量...例如...

String reglerAnnee;
...
// add a space if year(anne) is less than 10
// using a ternary operator, like an "if" but less code
reglerAnnee = annee < 10 ? " " : "";
..
// and add to the println ...
System.out.println("    "+reglerAnnee + annee + "     " + (int) capitalDeDepart 
                 + "$      " + (int) interet + "$             " 
                 + (int) nouveauCapital + "$");
...

结果会是这样的:

 1     10000$      1000$             11000$
 2     11000$      1100$             12100$
...
 9     21435$      2143$             23579$
10     23579$      2357$             25937$

只需将您的 System.out.println(...) 替换为以下内容:

System.out.format("%2d     %5d$      %5d$             %5d$\n", annee,
                  (int)capitalDeDepart, (int)interet, (int)nouveauCapital);