计算二次方程 - OOP Java 开关情况



我需要代码审查和JavaOOP中的一点提示。我正在编写一个程序来计算二次方程。我想写一个干净的代码,所以...

这是我的变量类。在这里,我存储变量并进行计算:

import java.util.Scanner;
class Variable {
private double a;
private double b;
private double c;
void input()
{
//      Dialog.isEnteringValues();
Scanner aValue = new Scanner(System.in);
a = aValue.nextDouble();
Scanner bValue = new Scanner(System.in);
b = bValue.nextDouble();
Scanner cValue = new Scanner(System.in);
c = cValue.nextDouble();
Dialog.isEnteredValues(a, b, c);
}
void calculate()
{
double delta = b * b - 4 * a * c;
System.out.println("Delta: " + delta);
if (delta < 0)
Dialog.isNoSolution();
else {
if (delta == 0) {
double x0 = -b / (2 * a);
Dialog.isOneSolution(x0);
}
if (delta > 0) {
double x1 = (-b - Math.sqrt(delta)) / 2 * a;
double x2 = (-b + Math.sqrt(delta)) / 2 * a;
Dialog.isTwoSolution(x1, x2);
}
}
}
}

这是我的 Dialog 类:我向用户显示消息,在这里我需要帮助。我希望当用户输入值 a 时,显示消息 a。如果 b 是 b,如果 c 是 c。

public class Dialog {
//    public void isEnteringValues()
//    {
//        switch (???) {
//            case a:
//                System.out.print("Input A: ");
//            case b:
//                System.out.print("Input B: ");
//            case c:
//                System.out.print("Input C: ");
//        }
//    }
static void isEnteredValues(double a, double b, double c)
{
System.out.println("A: " + a);
System.out.println("B: " + b);
System.out.println("C: " + c);
}
static void isNoSolution()
{
System.out.println("No solution.");
}
static void isOneSolution(double x0)
{
System.out.println("x0: " + x0);
}
static void isTwoSolution(double x1, double x2)
{
System.out.println("x1: " + x1);
System.out.println("x2: " + x2);
}
}

这是我的主要课程:

public class Calculation {
public static void main(String[] args) {
Variable variable = new Variable();
variable.input();
variable.calculate();
}
}

我正在学习面向对象的编程,我要求进行代码审查。方法和类的名称写得好吗?如何执行方法isEnteringValues()

使独立类为二次方程,并且不要在类中接受输入操作。 如下所示的代码可能会对您有所帮助。

import java.util.Scanner;
class QuadraticEquation {
private double a;
private double b;
private double c;
public QuadraticEquation(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}
public double calculateDiscriminant() {
return (b*b - 4 * a * c);
}

}
public class Calculation{
public static void main(String []args) {
Scanner scan = new Scanner(System.in);
double a = Dialog.isEnteredValues(scan, "a");
double b = Dialog.isEnteredValues(scan, "b");
double c = Dialog.isEnteredValues(scan, "c");
QuadraticEquation eq = new QuadraticEquation(a, b, c);
double disc = eq.calculateDiscriminant();
if(disc < 0) {
Dialog.isNoSolution();
}else if(disc > 0) {
double x1 = (-b - Math.sqrt(disc)) / 2 * a;
double x2 = (-b + Math.sqrt(disc)) / 2 * a;
Dialog.isTwoSolution(x1, x2);
}else {
double x0 = -b / (2 * a);
Dialog.isOneSolution(x0);
}
}
}
class Dialog {
//  public void isEnteringValues()
//  {
//      switch (???) {
//          case a:
//              System.out.print("Input A: ");
//          case b:
//              System.out.print("Input B: ");
//          case c:
//              System.out.print("Input C: ");
//      }
//  }
static double isEnteredValues(Scanner scan, String str)
{
System.out.println("Enter value " + str);
return scan.nextDouble();
}
static void isNoSolution()
{
System.out.println("No solution.");
}
static void isOneSolution(double x0)
{
System.out.println("x0: " + x0);
}
static void isTwoSolution(double x1, double x2)
{
System.out.println("x1: " + x1);
System.out.println("x2: " + x2);
}
}

最新更新