转换表

时间:2015-07-14 17:13:41

标签: java eclipse

我的任务是创建一个转换表,我无法弄清楚为什么我的输出在一方重复,因为另一方完成了它们的循环。有人可以帮忙吗?以下是我的代码:

public class Conversion {

    public static double celsiusToFahrenheit(double celsius) {
        // make conversion
        double f = (celsius * 9 / 5) + 32;
        return f;

    }

    public static double fahrenheitToCelsius(double fahrenheit) {
        // make conversion
        double c = (fahrenheit - 32.0) * 5 / 9.0;
        return c;

    }

    public static void main(String args[]) {

        double c;
        double f;
        //Display table
        System.out.println("Celsius \t Fahrenheit \t | \tFahrenheit \t Celsius");

        //When i = 40, if i is greater than, or equal to 31, decriment until false
        for (double i = 40; i >= 31; i--) {
            c = i;

            //When j = 120, if j is greater than, or equal to 30, decriment by 10 until false
            for (double j = 120; j >= 30; j -= 10) {
                f = j;

                //Show result
                System.out.println(c + "\t\t " + (Math.round(celsiusToFahrenheit(c) * 10.0) / 10.0) + "\t\t |\t" + f + "\t\t" + (Math.round(fahrenheitToCelsius(f) * 100.0) / 100.0));

            }
        }
    }
}

2 个答案:

答案 0 :(得分:3)

这是由于您已经介绍过的嵌套循环。

for (double i = 40; i >= 31; i--) {
    c = i;

    //When j = 120, if j is greater than, or equal to 30, decriment by 10 until false
    for (double j = 120; j >= 30; j -= 10) {
        f = j;

        //Show result
        System.out.println(c + "\t\t " + (Math.round(celsiusToFahrenheit(c) * 10.0) / 10.0) + "\t\t |\t" + f + "\t\t" + (Math.round(fahrenheitToCelsius(f) * 100.0) / 100.0));

    }
}

想象一下像表盘一样的双环。内环比外环移动得更快(就像分针移动得比时针快)。这意味着,对于Celsius循环中的每次迭代,我们在华氏循环中都有十次次迭代,就好像我们正在看一块表盘一样(我们每次都有60分钟)在那种情况下1小时)。

作为提示,您实际上可以在循环内声明多个变量以进行迭代。你想要调整循环条件的界限,以便得到你想要的结果,但这是一个开始。

//When i = 40, if i is greater than, or equal to 31, decriment until false
//When j = 120, if j is greater than, or equal to 30, decriment by 10 until false
for (double i = 40, j = 120; i >= 31 && j >= 30; i--, j -= 10) {
    c = i;
    f = j;
    //Show result
    System.out.println(c + "\t\t " + (Math.round(celsiusToFahrenheit(c) * 10.0) / 10.0) + "\t\t |\t" + f + "\t\t" + (Math.round(fahrenheitToCelsius(f) * 100.0) / 100.0));
}

答案 1 :(得分:1)

你的输出就像你描述的一样,因为每次执行外部for循环(一个用于覆盖摄氏温度到华氏温度)时,内部for循环(一个用于将华氏温度转换为摄氏温度)执行10次。