我正在研究一个程序,它接受两个数字的输入,然后进行一些不同的计算。我有我的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;
}
}
答案 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;
}
}
}