扫描仪应该在哪里进入这个程序?

时间:2014-06-26 03:34:22

标签: java

我正在研究一个程序,它接受两个数字的输入,然后进行一些不同的计算。我有我的TwoNumbers类,有几种不同的方法来计算总和,距离,平均值等。

我应该将扫描仪放在这个类中,还是应该将它放在Main方法中?

我知道这是非常基本的,但我只学习了几个星期的Java而且我很难找到如何完成这项工作/如何让输入与我的实例相关联变量和firstNumber和secondNumber

public class TwoNumbers{

private double firstNumber;
private double secondNumber;

public double getSum()
{
    double sum = firstNumber + secondNumber;
    return sum;
}

public double getDifference()
{
    double difference = firstNumber - secondNumber;
    return difference;
}

public double getProduct()
{
    double product = firstNumber - secondNumber;
    return product;
}

public double getAverage()
{
    double average = (firstNumber + secondNumber) / 2;
    return average;
}

public double getDistance()
{
    double distance = Math.abs(firstNumber - secondNumber);
    return distance;
}

public double getMax()
{
    double maximum = Math.max(firstNumber, secondNumber);
    return maximum;
}

public double getMin()
{
    double minimum = Math.min(firstNumber, secondNumber);
    return minimum;
}
}

6 个答案:

答案 0 :(得分:4)

每个班级都应遵循single responsibility principle。您的TwoNumbers类应仅使用double个数字并对其执行操作,仅此而已。为此类提供double号应该在客户端,并且还能提供数字,这意味着客户端可以定义Scanner或其他方式来提供数据。

答案 1 :(得分:1)

您显示的类TwoNumbers类应该没有用户输入,因为它应该只封装两个数字和两个数字的概念。它应该以这样的方式编写,即它可以与扫描程序或GUI程序一起使用而不必更改它。因此,UI应该在主要或另一个类中。

答案 2 :(得分:1)

您可能希望为该类创建一个构造函数,并在构造函数中传递您想要的变量。这意味着您可以从其他地方获取输入,IE是主要方法或其他方式。

public TwoNumbers(double num1, double num2){

    firstNumber = num1;
    secondNumber = num2;

}

答案 3 :(得分:1)

For example:
public double getSum(firstnumber, secondnumber) // <-- you need pass in the value
{
    double sum = firstNumber + secondNumber;
    return sum;
}
/*
 * somewhere in the main or another method you can delare the first number / 2nd number
 * for example:
*/
public void static main (String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("enter first number");
    firstnumber = input.nextInt();
    System.out.println("enter first number");
    secondnumber = input.nextInt();
    }

之后,您需要做的就是调用要将数字传递给的方法。

答案 4 :(得分:1)

您需要在TwoNumbers中使用构造函数:

public class TwoNumbers {

    private double firstNumber;
    private double secondNumber;

    public TwoNumbers(double firstNumber, double secondNumber){
        this.firstNumber = firstNumber;
        this.secondNumber = secondNumber;
    }
}

然后在其他课程中,您可以使用扫描仪:

public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter firstNumber");
        double firstNumber = scanner.nextDouble();
        System.out.println("Enter secondNumber");
        double secondNumber = scanner.nextDouble();

        TwoNumbers obj = new TwoNumbers(firstNumber, secondNumber);

        //Call methods from TwoNumbers
    }

答案 5 :(得分:1)

如果您将扫描程序放在主类或TwoNumbers类中,那么代码真的会起作用。这样做的最佳实践方法是将扫描仪和任何其他输入/输出代码放在主类中,将处理/计算代码放在另一个类中。您选择哪一个将基于您的应用程序,但大多数时候您将在主类中使用扫描仪。所以......

public class Driver {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        String s;
        while((s = in.nextLine()) != "stop"){
            TwoNumbers.sum(Double.parseDouble(s.split(" ")[0]), Double.parseDouble(s.split(" ")[1]));
        }
        in.close();
    }
}

public class TwoNumbers{
        public static double sum(double a, double b){
            return a+b;
        }
    }
}