如何在方法之间传递参数并使用Java正确调用方法?

时间:2018-11-01 16:56:37

标签: java methods parameters return

程序应执行以下操作:

编写一个名为getheartRate的方法,该方法不带任何参数并返回一个int(heartRate)。 该方法提示用户输入患者的心律,读取 他们从命令行输入的内容,并返回该值。

编写一个名为checkHeartRate的方法,该方法接受一个int参数(心率)并返回 字符串(结果)。如果心率高于100,则返回值“高”。如果心率低于 60,返回值“低”。否则返回“正常”。

编写一个名为printHRResult的方法,该方法带有一个String参数,这是结果 从方法checkHeartRate。将此值打印到命令行。

使用适当的参数传递从main方法中调用所有三个方法。

到目前为止,我有:

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 :(得分:0)

首先,您将创建两个具有相同输入类型(Scanner)的System.in对象,不建议这样做。相反,只需创建一个Scanner对象并在程序中的任何地方使用它即可。 This post有一些很好的信息。

使用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
    }
}

答案 1 :(得分:0)

您应该更改此方法以返回心率,如下所示:

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);

那应该可以解决您的问题。