如何将循环中的值返回到main方法?

时间:2014-10-12 07:15:04

标签: java

我从返回的for循环中获取最后一个值,但我希望返回所有值。我的输出如下:

Celsius   Fahrenheit    |   Fahrenheit   Celsius   
40.0      87.80          |      120.00    -1.11 
39.0      87.80          |      110.00    -1.11 
38.0      87.80          |      100.00    -1.11 
37.0      87.80          |       90.00    -1.11 
36.0      87.80          |       80.00    -1.11 
35.0      87.80          |       70.00    -1.11 
34.0      87.80          |       60.00    -1.11 
33.0      87.80          |       50.00    -1.11 
32.0      87.80          |       40.00    -1.11 
31.0      87.80          |       30.00    -1.11 

我需要其他值才能完成输出表。

public class TemperatureConverter {

    public static void main(String[] args) {
        double celsius = 0;
        double fahrenheit = 0;
        int v = 0;
        double a = 0;
        double b = 0;
        double fahrenheitToCelsius = fahrenheitToCelsius(a);
        double celsiusToFahrenheit = celsiusToFahrenheit(b);
        System.out.println("Celsius   Fahrenheit    |   Fahrenheit   Celsius   ");

        celsius = 40;
        fahrenheit = 120.0;

        while (celsius >= 31.0) {
            while (fahrenheit >= 30) {
                System.out.printf("%-9.1f%6.2f          |   %9.2f%9.2f \n", celsius, celsiusToFahrenheit, fahrenheit, fahrenheitToCelsius);
                celsius = celsius - 1;
                fahrenheit = fahrenheit - 10;
            }
        }
        celsiusToFahrenheit(celsius);

        fahrenheitToCelsius(fahrenheit);

    }

    public static double celsiusToFahrenheit(double celsius) {
        double fahrenheit = 0;

        for (celsius = 40.0; celsius >= 31.0; celsius--) {
            fahrenheit = ((9.0 / 5.0) * celsius + 32);

        }
        return fahrenheit;
    }

    public static double fahrenheitToCelsius(double fahrenheit) {
        double celsius = 0;

        for (fahrenheit = 120; fahrenheit >= 30; fahrenheit = fahrenheit - 10) {
            celsius = ((5.0 / 9) * (fahrenheit - 32));

        }
        return celsius;
    }
}

输出:

Celsius   Fahrenheit    |   Fahrenheit   Celsius   
40.0      87.80          |      120.00    -1.11 
39.0      87.80          |      110.00    -1.11 
38.0      87.80          |      100.00    -1.11 
37.0      87.80          |       90.00    -1.11 
36.0      87.80          |       80.00    -1.11 
35.0      87.80          |       70.00    -1.11 
34.0      87.80          |       60.00    -1.11 
33.0      87.80          |       50.00    -1.11 
32.0      87.80          |       40.00    -1.11 
31.0      87.80          |       30.00    -1.11 

3 个答案:

答案 0 :(得分:0)

我不确定我是否理解了这个问题,但我认为你不需要forcelsiusToFahrenheit方法中的fahrenheitToCelsius循环,你&# 39;已经传过号码。

也许如果你改变这样的方法,它应该可以工作

public static double celsiusToFahrenheit (double celsius) {
  double fahrenheit = 0;
  fahrenheit = ((9.0 / 5.0) * celsius + 32);
  return fahrenheit;
}

你必须在主循环中调用此方法!

答案 1 :(得分:0)

调用while内的方法

System.out.printf("% - 9.1f%6.2f |%9.2f%9.2f \ n",celsius,celsiusToFahrenheit(摄氏),fahrenheit,fahrenheitToCelsius(fahrenheit));

答案 2 :(得分:0)

以下是一些示例代码。注意嵌套方法调用。你不应该在转换方法中循环。

public class TemperatureConverter {

  public static double celsiusToFahrenheit(double celsius) {
    return 9.0 / 5 * celsius + 32;
  }

  public static double fahrenheitToCelsius(double fahrenheit) {
    return 5.0 / 9 * (fahrenheit - 32));
  }

  public static void main(String[] args) {
    double celsius = 40;
    double fahrenheit = 120.0;
    System.out.println("Celsius   Fahrenheit\t|  Fahrenheit   Celsius   ");
    while (celsius > 30) {
      System.out.printf("%-10.1f%6.2f\t|%8.2f%12.2f\n", celsius, 
          celsiusToFahrenheit(celsius), fahrenheit, fahrenheitToCelsius(fahrenheit));
      celsius--;
      fahrenheit -= 10;
    }
  }
}

打印: Celsius Fahrenheit | Fahrenheit Celsius 40.0 104.00 | 120.00 48.89 39.0 102.20 | 110.00 43.33 38.0 100.40 | 100.00 37.78 37.0 98.60 | 90.00 32.22 36.0 96.80 | 80.00 26.67 35.0 95.00 | 70.00 21.11 34.0 93.20 | 60.00 15.56 33.0 91.40 | 50.00 10.00 32.0 89.60 | 40.00 4.44 31.0 87.80 | 30.00 -1.11