Как передать параметры между методами и правильно вызвать метод с использованием Java? - PullRequest
0 голосов
/ 01 ноября 2018

Программа должна сделать следующее:

Напишите метод getheartRate, который не принимает параметров и возвращает int (heartRate). Этот метод запрашивает у пользователя пульс пациента, читает их ввод из командной строки и возвращает это значение.

Напишите метод с именем checkHeartRate, который принимает параметр int (частоту сердечных сокращений) и возвращает Строка (результат). Если частота сердечных сокращений выше 100, верните значение «Высокий». Если пульс ниже 60, вернуть значение «Низкий». В противном случае верните «Normal».

Напишите метод с именем printHRResult, который принимает параметр String, который является результатом из метода checkHeartRate. Выведите это значение в командную строку.

Вызвать все три метода из основного метода, используя соответствующую передачу параметров.

Пока у меня есть:

public class UnitSixInClassFall2018 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        UnitSixInClassFall2018 u = new UnitSixInClassFall2018();
        u.getHeartRate();
        System.out.println();
        Scanner scan = new Scanner(System.in);
        u.checkHeartRate(0);
        // END MAIN
    }

    public int getHeartRate(){
        System.out.print("Please enter your heart rate: ");
        Scanner scan = new Scanner(System.in);
        int heartRate = scan.nextInt();
        return 0;
    }

    public void checkHeartRate(int heartRate){
        if (heartRate > 100) {
           String result = "High";
        }
        else if (heartRate < 60) {
           String result = "Low";
        }
        else {
           String result = "Normal";
        }
    }

    public String printHRResults(String result) {  
       System.out.print("Your hear rate is " + result + ".");
       return result; 
    }

}

При запуске все, что выводится, это «Пожалуйста, введите ваш пульс:». Как только я ввожу целое число, программа заканчивается. Что делается неправильно?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Вы должны изменить этот метод, чтобы он возвращал частоту сердечных сокращений следующим образом:

public int getHeartRate(){
    System.out.print("Please enter your heart rate: ");
    Scanner scan = new Scanner(System.in);
    int heartRate = scan.nextInt();
    // Also add this
    scan.close();
    return heartRate;
}

И измените этот метод, чтобы он возвращал результат:

public String checkHeartRate(int heartRate){
    if (heartRate > 100) {
       return "High";
    }
    else if (heartRate < 60) {
       return "Low";
    }
    else {
       return "Normal";
    }

}

Тогда в вашем основном методе:

// get the heart rate
int heartRate = u.getHeartRate();
// Call the checkHeartRate method
String result = checkHeartRate(heartRate);
// call the printHRResults 
printHRResults(result);

Это должно решить твою проблему.

0 голосов
/ 01 ноября 2018

Прежде всего, вы создаете два Scanner объекта с одинаковым типом ввода (System.in), что не рекомендуется. Вместо этого просто создайте один Scanner объект и используйте его везде в своей программе. Это сообщение содержит полезную информацию.

Улучшенная версия вашего кода с улучшенным использованием объекта Scanner выглядит следующим образом:

public UnitSixInClassFall2018 {
    private static final Scanner scan = new Scanner(System.in);

    public static void main(String[] args) {
        NewMain u = new NewMain();
        int heartRate = u.getHeartRate();
        System.out.println();
        String result = u.checkHeartRate(heartRate);
        u.printHRResults(result);
        scan.close(); // Close the scanner once you are completely done using it
    }

    public int getHeartRate() {
        System.out.print("Please enter your heart rate: ");
        return scan.nextInt(); // Return the input of the user
    }

    public String checkHeartRate(int heartRate) {
        String result = ""; // Initialize some default value
        if (heartRate > 100) {
           result = "High";
        }
        else if (heartRate < 60) {
           result = "Low";
        }
        else {
           result = "Normal";
        }
        return result; // Return the result calculated from the if-statements
    }

    public void printHRResults(String result) {
       System.out.print("Your heart rate is " + result + ".");
       // Originally this method returned a string but that seems unnecessary
    }
}
...