Метод возврата по Фаренгейту в Цельсий и не возврат для Цельсия в Фаренгейт - PullRequest
0 голосов
/ 14 февраля 2019
package tempconverter;

import java.util.*;

import java.util.Scanner;

public class TempConverter {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double tem;

        System.out.print("Enter number: ");
        double temp = sc.nextDouble();    
        System.out.println("Convert to Celsius or Fahrenheit (C or F): ");
        int input = sc.nextInt();

        if (input == 'C'){
            System.out.println("Fahrenheit to Celcius is: " + toCelsius(temp));
        }else if(input == 'F'){
            toFahrenheit(temp);
        } 
        public static double toCelsius(double cels){
            double far = 5/9.0*(cels-32);
            return far;
        }
        public static void toFahrenheit(double fahr){
            double tem = 9/5.0*fahr+32;
            System.out.println("Celsius to Fahrenheit: " + toFahrenheit(tem));
    }
}

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Я переделал твой код.У вас был рекурсивный вызов внутри одного из ваших методов, и ваш метод не возвращал значения.

    public static void main(String[] args) {
        String name = null;
        float temperature;
        Scanner in = new Scanner(System.in);

        System.out.println("Enter temperature: " );
        temperature = in.nextFloat();

        System.out.println("Convert to Celsius or Fahrenheit (C or F): ");
        name = in.next();


        if (name.equals("C")) {
            System.out.println("Fahrenheit to Celcius: " + toCelsius(temperature));
        }else if (name.equals("F")){
            System.out.println("Celsius to Fahrenheit: " + toFahrenheit(temperature));
        }

    }

public static double toCelsius(double cels){
        double far = 5/9.0*(cels-32);
        return far;
    }
    public static double toFahrenheit(double fahr){
        double tem = 9/5.0*fahr+32;
        return tem;
    }
0 голосов
/ 14 февраля 2019

Основная проблема в том, что в вашем коде есть цикл.Метод toFahrenheit снова вызывает toFahrenheit внутри println.Это приводит к бесконечному циклу, который в какой-то момент приведет к переполнению стека.Переместите println за пределы метода, как в toCelsius, и верните преобразованное значение.

Кроме этого, у вас есть проблема как 'C' и 'F'.

...