Java-класс для квадратного уравнения - PullRequest
0 голосов
/ 19 сентября 2018

Я работаю в java для школы, и до сих пор у меня были некоторые проблемы с тем, чтобы обдумать занятия и проблемы с домашними заданиями для них.У меня есть следующие критерии для класса квадратного уравнения:

Homework Problem Here

Пока у меня есть:

private static double coefA;
private static double coefB;
private static double coefC;


public static void main(String[] args) 
{
    Scanner input = new Scanner(System.in);
    System.out.println("Please enter the a, b and c for a Quadratic: ");
    coefA = input.nextDouble();
    coefB = input.nextDouble();
    coefC = input.nextDouble();

    double discriminant = getDiscriminant();

    if (discriminant < 0)
    {
        System.out.println("There are no real roots.");

    }
    else if (discriminant == 0)
    {
        System.out.println("The one root is: "+getRoot1());
    }
    else
    {
        System.out.println("The first root is: "+getRoot1());
        System.out.println("The second root is: "+getRoot2());
    }

}
//Construct
public QuadraticEquation(double a, double b, double c)
{
    coefA = a;
    coefB = b;
    coefC = c;
}

private static double getDiscriminant()
{
    double discriminant = (coefB * coefB) - (4 * coefA * coefC);
    return discriminant;
}
static double getRoot1()
{
    double root1 = (-coefB + Math.sqrt(getDiscriminant()))/ 2 * coefA;
    return root1;

}
static double getRoot2()
{
    double root2 = (-coefB - Math.sqrt(getDiscriminant()))/ 2 * coefA;
    return root2;

}
}

Уравнение не 'Я не думаю, что я отвечаю критериям, но я не совсем понимаю, о чем идет речь в книге.Кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Это не очень хороший дизайн для класса QuadraticEquation.Три переменные (coefA, coefB, coefC) должны быть переменными экземпляра, а не статическими.У вас должен быть конструктор, который принимает три значения в качестве входных данных.Для конструктора гораздо эффективнее вызывать getDiscriminant () и вычислять два возможных ответа, а также использовать getter для их получения.

0 голосов
/ 19 сентября 2018

Реализация вашего математического уравнения верна, но вы должны заключить его в квадратные скобки.Например;

double root1 = (-coefB + Math.sqrt(getDiscriminant()))/ 2 * coefA;

Здесь (-coefB + Math.sqrt(getDiscriminant())) уравнений равно , делив на 2.После этого умножение на coefA.Будь осторожен.Измените свою логику в этом примере;

double root1 = (-coefB + Math.sqrt(getDiscriminant()))/ (2 * coefA);

Поэтому примените к другим полям, чтобы получить правильный результат.

Ваш два метода должны быть изменены.

static double getRoot1()
{
    double root1 = (-coefB + Math.sqrt(getDiscriminant()))/ (2 * coefA);
    return root1;

}
static double getRoot2()
{
    double root2 = (-coefB - Math.sqrt(getDiscriminant()))/ (2 * coefA);
    return root2;

}

В болеедеталь, таблица приоритетов операторов;

Operators                                       Precedence              Associativity
postfix increment and decrement                 ++ --                   left to right
prefix increment and decrement, and unary       ++ -- + - ~ !           right to left
multiplicative                                  * / %                   left to right
additive                                        + -                     left to right
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...