-2

我是Java的初学者,我为这个问题发疯了。所以几乎我刚刚开始学习循环嵌套,并尝试解决书中我正在努力解决的几个问题。

书中的问题要求我,

为打印摄氏/华氏转换表的程序编写伪代码,如下所示。

 Celsius | Fahrenheit 
 --------+-----------
       0 |         32
      10 |         50
      20 |         68
      ...         ...
     100 |        212

我写的代码是,

public class table
{
    public static void main(String[] args)
    {
        int i = 0;                       
        System.out.println("Celsius | Fahrenheit");
        System.out.println("--------+-----------");
        for ( i = 0; i <= 100; i+= 10)
        {            
            for (int c = 1; c <= 1; c++)
            {                
                System.out.print("    " + i + "  |");
                double sum = (i * (9.0/5.0)) + 32;  // formula for celsius to fahrenheit conversion
                System.out.printf("%d5", (int) sum);
            }
            System.out.println();
        }
    }
}

我的代码似乎没有将摄氏度转换为华氏度数。它只打印大数字,以及如何更改我的代码以获得有组织的表格。请帮忙!我希望它像示例要求我做的那样。

4

3 回答 3

2

你有一个额外的循环。并且在您可能的意思的格式中"%5d"。 正在向其他正确的数字"%d5"添加 a !5

    public static void main(String[] args)
    {
        System.out.println("Celsius | Fahrenheit");
        System.out.println("--------+-----------");
        for(int i = 0; i <= 100; i+= 10)
        {
            System.out.printf("%5d   |",i);
            double sum = (i * (9.0/5.0)) + 32;  // formula for celsius to fahrenheit conversion
            System.out.printf("%5d", (int)sum );
            System.out.println();
        }
    }

通过这些修改,它产生:

    Celsius | Fahrenheit
    --------+-----------
        0   |   32
       10   |   50
       20   |   68
       30   |   86
       40   |  104
       50   |  122
       60   |  140
       70   |  158
       80   |  176
       90   |  194
      100   |  212

哪个是对的。

于 2013-09-03T06:05:44.340 回答
1

它不是打印大数字,只是您提供"%d5"了 printf 模式,导致您打印的数字附加了一个“5”。因此,屏幕上不再显示“32”,而是现在显示“325”

我真的不明白你为什么这样做,但我猜你"%5d"想要

为了使您的代码更具可读性,请将输出放在一行中,而不是用不同的方式将它们分成几段,例如:

    for ( int c = 0; c <= 100; c += 10)
    {
        int f = (int) (c * (9.0/5.0)) + 32);  // C to F
        System.out.printf("%5d | %5d\n", c, f);
    }
于 2013-09-03T06:07:36.663 回答
0

我刚刚删除了内部 for 循环,这是不必要的其余代码是正确的..

public class table
{
    public static void main(String[] args)
    {
        int i = 0;

        System.out.println("Celsius | Fahrenheit");
        System.out.println("--------+-----------");

        for ( i = 0; i <= 100; i+= 10)
        {    
            System.out.print("    " + i + "  |");
            double sum = (i * (9.0/5.0)) + 32;  // formula for celsius to fahrenheit conversion

            System.out.printf("%5d", (int)sum );
            System.out.println();
        }
    }
}
于 2013-09-03T06:02:27.833 回答