Можно ли вызвать метод с помощью сканера? - PullRequest
0 голосов
/ 08 июля 2020

Я новичок в java и только что научился использовать методы. Я написал простую программу для преобразования температур:

public class TempConversion {

double temperature;

public TempConversion() {

}

public double celsiusToKelvin(double celsiusTemp) {
    temperature = celsiusTemp + 273.15;
    System.out.println("Converted temperature: " + temperature);
    return temperature;
}

public double celsiusToFahrenheit(double celsiusTemp) {
    temperature = celsiusTemp * 9 / 5 + 32;
    System.out.println("Converted temperature: " + temperature);
    return temperature;
}

public double fahrenheitToCelsius(double fahrenheitTemp) {
    temperature = (fahrenheitTemp - 32) * 5 / 9;
    System.out.println("Converted temperature: " + temperature);
    return temperature;
}

public double fahrenheitToKelvin(double fahrenheitTemp) {
    temperature = (fahrenheitTemp + 459.67) * 5 / 9;
    System.out.println("Converted temperature: " + temperature);
    return temperature;
}


public double kelvinToCelsius(double kelvinTemp) {
    temperature = kelvinTemp - 273.15;
    System.out.println("Converted temperature: " + temperature);
    return temperature; 
}

public double kelvinToFahrenheit(double kelvinTemp) {
    temperature = kelvinTemp * 9 / 5 - 459.67;
    System.out.println("Converted temperature: " + temperature);
    return temperature;     
}


public static void main(String[] args) {
    TempConversion temp = new TempConversion();

    temp.celsiusToFahrenheit(38);
    temp.celsiusToKelvin(0);
    
}

}

Однако сейчас, чтобы программа преобразовывала температуры, я должен вызвать каждый метод в самом коде. Если я правильно понял, я могу использовать класс Scanner для получения пользовательского ввода, поэтому как мне вызвать один из методов, одновременно используя Scanner для получения пользовательского ввода. Я не уверен, имеет ли мой вопрос смысл, но я могу попытаться уточнить, если его спросят.

1 Ответ

0 голосов
/ 09 июля 2020

Возможно, это не лучшее решение, но я думаю, что это довольно c графическое объяснение полезности функции scanner в Java.

Просто скопируйте и вставьте это в main область вашего кода:


       public static void main(String[] args) {
        TempConversion temp = new TempConversion();
        temp.celsiusToFahrenheit(38);
        temp.celsiusToKelvin(0);

        Double number;
        String input;
        String output;

        Scanner sc = new Scanner(System.in);
        System.out.println("Input a number, only double allowed");

        number = sc.nextDouble();

        sc.nextLine();
        System.out
                .println("Input the first letter of the source unit. c for celsius, f for fahrenheit or k for kelvin");

        input = sc.nextLine();
        System.out
                .println("Input the first letter of the target unit. c for celsius, f for fahrenheit or k for kelvin");

        output = sc.nextLine();

        if (input.equals("c")) {
            if (output.equals("k")) {
                temp.celsiusToKelvin(number);
            } else if (output.equals("f")) {
                temp.celsiusToFahrenheit(number);
            }
        } else if (input.equals("f")) {
            if (output.equals("c")) {
                temp.fahrenheitToCelsius(number);
            } else {
                temp.fahrenheitToKelvin(number);
            }

        } else {
            if (output.equals("c")) {
                temp.kelvinToCelsius(number);
            } else {
                temp.kelvinToFahrenheit(number);
            }
        }
        sc.close();
    }

О том, как Scanner на самом деле работает Это очень легко узнать в inte rnet, но как только вы объявите объект Scanner, появится нет необходимости объявлять новый Scanner каждый раз, когда вы хотите сохранить ввод для чего-то еще, так же, как это было сделано выше, вы можете просто повторно использовать его много раз, когда захотите. от одного объекта к другому (в этой проблеме заключается в сохранении двойника, а теперь нам нужна строка) вам необходимо очистить буфер (вот оно, sc.nextLine(); предложение).

И после всего этого, не забудьте закрыть сканер. Это не обязательно, но если нет, вы получите «предупреждение» или что-то в этом роде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...