Java: 从一种方法到另一种方法调用用户输入的变量

Java: Calling variables of user input from one method to another

我目前正在修改以前的 Java 程序,该程序通过将部分代码分解为方法并调用这些方法来完成相同的任务来计算二次公式类型的数学问题。目前我一直在创建一种方法来计算分子中的判别式。按照分配,我应该有一种方法可以接收用户输入的 a、b 和 c 值,但我不确定如何将这些值从一种方法获取到应该在中使用这些值的下一个方法计算。

我的导师希望我们将 a b 和 c 变量输入到数组中,我知道现在的方式是将值放入数组的一种非常手动的方式,但仍然适用于此目的。

这是我到目前为止的内容,感谢阅读。

编辑:我又从头开始了,我不知道如何正确return信息从我的方法中,以便下一个可以使用它。我不断收到方法参数不适用的错误。有什么想法吗?

import java.util.*;

public class QuadraticMethods {
public static void main(String[] args){

    getValues();
    calcDisc(userInput);



}


public static double[] getValues() {
    double[] userInput;
    userInput = new double[3];
    Scanner kbd = new Scanner(System.in);
    System.out.println("Fourth Assignment by MyNameHere");
    System.out.println("Welcome to the quadratic formula computation tool.");
    System.out.println("This tool will solve problems in the form of: a^x + bx + c.");
    System.out.println("Please enter the values you would like for a, b, and c.");
    for (int i = 0; i < userInput.length; i++) {
        userInput[i] = kbd.nextDouble(); }


    double aValue = userInput[0];
    double bValue = userInput[1];
    double cValue = userInput[2];
    /*
    System.out.println(aValue);
    System.out.println(bValue);
    System.out.println(cValue);
     */
    return userInput;
}


public static double calcDisc(double[] userInput) {
    double aValue = userInput[0];
    double bValue = userInput[1];
    double cValue = userInput[2];
    double radicalValue = (Math.pow(bValue, 2) - (4*aValue*cValue));
    System.out.println(radicalValue);
    return radicalValue;
}

}

要让您当前的代码正常工作,只需要稍作改动:

public static void main(String[] args) {

    double[] userInput = getValues();
    calcDisc(userInput);
}

此外,这些赋值并未实际使用。

public static double[] getValues() {
    // ...

    double aValue = userInput[0];
    double bValue = userInput[1];
    double cValue = userInput[2];

    // ...
}

其他一些改进可能是:

计算它的方法不应该打印结果。您已经通过返回值以正确的方式声明了该方法。现在您应该使用返回值并在调用方法中打印结果。

public static void main(String[] args) {

    double[] userInput = getValues();
    double radicalValue = calcDisc(userInput);

    System.out.println(radicalValue);
}

// ...

    public static double calcDisc(double[] userInput) {
    double aValue = userInput[0];
    double bValue = userInput[1];
    double cValue = userInput[2];
    double radicalValue = (Math.pow(bValue, 2) - (4 * aValue * cValue));
    return radicalValue;
}

打印横幅可能不应与请求用户输入混在一起。想象一下,您想要重复 read/evaluate/print 循环:

public static void main(String[] args) {

    while (true) {
        double[] userInput = getValues();
        double radicalValue = calcDisc(userInput);

        System.out.println(radicalValue);
    }
}

每次都会打印横幅文本。隔离职责使您能够在不影响不相关代码的情况下改变行为。

public static void main(String[] args) {

    printBanner();
    while (true) {
        double[] userInput = getValues();
        double radicalValue = calcDisc(userInput);

        System.out.println(radicalValue);
    }
}

private static void printBanner() {
    System.out.println("Fourth Assignment by MyNameHere");
    System.out.println("Welcome to the quadratic formula computation tool.");
    System.out.println("This tool will solve problems in the form of: a^x + bx + c.");
}

扫描仪应在使用后关闭。 Java 7 次资源尝试将为您做到这一点。

public static double[] getValues() {
    double[] userInput;
    userInput = new double[3];
    try (Scanner kbd = new Scanner(System.in)) {
        System.out.println("Please enter the values you would like for a, b, and c.");
        for (int i = 0; i < userInput.length; i++) {
            userInput[i] = kbd.nextDouble();
        }
    }
    return userInput;
}