java 用 printf 显示和格式化

标签 java arrays format printf

我有一个关于如何使用 printf 显示的问题。我使用了四次 printf 。前两次和最后一次,效果很好。第三个没有。我希望它与其他值具有相同的格式。我怎样才能解决这个问题?任何帮助将不胜感激。我使用格式 %15.2f 来显示它,当我编译并执行它时,它只是给我这个:

run:
    Mercury          Venus          Earth           Mars        Jupiter         Saturn         Uranus        Neptune          Pluto
    2439.70        6051.90        6378.00        3402.50       71492.00       60270.00           25562.00       24774.00        1195.00
330220000000000000000000.004868500000000000000000000.005973600000000001000000000.00641850000000000000000000.001898600000000000200000000000.00568459999999999960000000000.0086810000000000000000000000.00102430000000000000000000000.0013120000000000000000000.00
       3.70           8.87           9.79           3.70          24.78          10.44           8.86          11.13           0.61
BUILD SUCCESSFUL (total time: 0 seconds)

下面是我的代码片段(我第三次使用 printf 的地方多了一个“/”:

public static void printResults(String[] name, double[] radius, double[] mass, double[] gravity)
{
        // fill in code here
        for(int i = 0; i < name.length; i++){
            System.out.printf("%15s", name[i]);
        }
        System.out.println();

        for(int i = 0; i < radius.length; i++){
            System.out.printf("%15.2f", radius[i]);
        }
        System.out.println();
        //////////////////
        for(int i = 0; i < mass.length; i++){
            System.out.printf("%15.2f", mass[i]);
        }
        System.out.println();

        for(int i = 0; i < gravity.length; i++){
            System.out.printf("%15.2f", gravity[i]);
        }
        System.out.println();
}

//print the gravity values to text file
public static void printToFile(double[] gravity)throws IOException
{
    // fill in code here
}

public static void main(String[] args)throws IOException
{
    // Initialize variables
    String[] names = {"Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune", "Pluto"};
    double[] radii = {2439.7, 6051.9, 6378, 3402.5, 71492, 60270, 25562, 24774, 1195};
    double[] masses = {3.3022 * Math.pow(10,23), 4.8685 * Math.pow(10,24), 5.9736 * Math.pow(10,24), 6.4185 * Math.pow(10,23),
                1.8986 * Math.pow(10,27), 5.6846 * Math.pow(10,26), 8.6810 * Math.pow(10,25), 1.0243 * Math.pow(10,26), 1.312 *
                    Math.pow(10,22)};
    // or using big E notation:
    // double [] mass = {3.30E23, 4.87E24, 5.97E24, 6.42E23, 1.90E27, 5.68E26, 8.68E25, 1.02E26, 1.27E22}; // See IMACS double lesson for big E notation

    // Processing
    double[] gravities = calcGravity(radii, masses);

最佳答案

输出看起来很奇怪,因为质量值相当长,特别是当打印为十进制数字时。 printf 不会截断超出给定字段宽度的值。

您可能想在打印质量时使用 e。它将以科学记数法打印出值,这可能更适合大值。

for(int i = 0; i < mass.length; i++){
    System.out.printf("%15.2e", mass[i]);
}

关于java 用 printf 显示和格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20532160/

相关文章:

C#:自定义数组排序

javascript - JSON - Javascript - 如何通过搜索值列表来搜索数组项

python - 如何屏蔽我的 float ,最好不使用正则表达式?

c# - 在 MVC3 应用程序中使用 C# 设置日期格式

java - 小数格式与字符串格式

java - Android 中如何将 ASCII 字符转换为十进制数字?

java - 在 Android 上合并两个 WAVE 文件(连接)

javascript - 使用 ES6 填充缺少数据点的数组

java - 需要帮助在 java 中创建文件

java - 如何使 JUnit assertThat() 使用下限通配符?