有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在循环中对齐数字列

我试图复制一个从kg到lbs的转换列表,反之亦然。我已经找到了我想要的输出和功能代码,但是我缺少一些东西来将我的值与列的右侧对齐

这是我的密码:

import java.text.*;

public class KilosTwoColumn {
    public static void main(String[] args) {
        System.out.println("Kilograms" + "\t" + "Pounds" + "\t" + " | " + "\t" + "Pounds" + "\t" + "Kilograms");

        int count = 0;

        while (count < 100) {
            int kilos = count * 2 + 1;
            int pounds2 = (count + 4) * 5;
            double pounds = kilos * 2.2;
            double kilos2 = pounds2 * .453;
            DecimalFormat df = new DecimalFormat("#.#");

            //if (count > 1 && count < 98) {
                //System.out.println("...");
                //break;
            //}

            System.out.printf("%-17d %.1f    | %7d        %.2f%n", kilos, pounds, pounds2, kilos2);
            count++;
        }
    }
}

我还试图在列表的三行中创建一个中断,并继续最后两行


共 (1) 个答案

  1. # 1 楼答案

    问题是,您没有为浮点值指定宽度,只指定小数位数

    例如,考虑^ {CD1>},它将将第二个值设为浮点值,小数位数为1位,但没有占用多少空间的指示。通过将其更改为"%-17d %12.1f,它将占用12个字符,小数点为1

    试试这样:

    public class KilosTwoColumn {
        public static void main(String[] args) {
    
            System.out.printf("%12s  %12s  |  %7s   %12s\n", "Kilograms", "Pounds", "Pounds", "Kilograms");
    
            int count = 0;
    
            while (count < 100) {
                int kilos = count * 2 + 1;
                int pounds2 = (count + 4) * 5;
                double pounds = kilos * 2.2;
                double kilos2 = pounds2 * .453;
                DecimalFormat df = new DecimalFormat("#.#");
    
                //if (count > 1 && count < 98) {
                    //System.out.println("...");
                    //break;
                //}
    
                System.out.printf("%12d  %12.1f  |  %7d   %12.1f\n", kilos, pounds, pounds2, kilos2);
                count++;
            }
        }
    }
    

    对我来说,上述过程输出:

    Kilograms        Pounds  |   Pounds      Kilograms
            1           2.2  |       20            9.1
            3           6.6  |       25           11.3
    ....
          199         437.8  |      515          233.3