我的二次公式代码有什么问题
What is wrong with my code for quadratic formula
public class QuadraticEqn {
private double a, b, c;
public QuadraticEqn(double x, double y, double z){
a=x;
b=y;
c=z;
}
private double disc = b*b-4*a*c;
public boolean hasSolutions(){
if(disc>=0)
return true;
else
return false;
}
public double getSolutions1(){
return (-b-Math.sqrt(disc))/(2*a);
}
public double getSolutions2(){
return (-b+Math.sqrt(disc))/(2*a);
}
}
import java.util.Scanner;
public class QuadraticEquationTest {
public static void main(String[] args) {
Scanner values = new Scanner(System.in);
System.out.println("enter values for a, b, c:");
double a=values.nextDouble();
double b=values.nextDouble();
double c=values.nextDouble();
QuadraticEqn qe = new QuadraticEqn(a, b, c);
if (qe.hasSolutions())
System.out.println(qe.getSolutions1()+" "+qe.getSolutions2());
else
System.out.println("No real solutions");
}
}
主要的 class 应该打印出给定输入的真实解决方案。我在这个问题上被困了几个小时。我似乎无法弄清楚我做错了什么。我总是得到错误的答案。请帮忙!
您对
有疑问
private double disc = (b*b)-(4*a*c);
当您创建一个 QuadraticEqn
时,变量 disc
立即被赋予一个值,但是,它在您保存 a、b 和 c 之前被赋予一个值。因此它创建 disc
就好像 a、b 和 c 都为 0。
要修复它,请在构造函数中更新 disc
。
public class QuadraticEqn {
private double a, b, c, disc; //We're created before the constructor
//runs with default values of 0!
public QuadraticEqn(double x, double y, double z){
a=x;
b=y;
c=z;
disc = b*b-4*a*c; //Give me a value after we know what the others are!
}
public boolean hasSolutions(){
if(disc>=0)
return true;
else
return false;
}
public double getSolutions1(){
return (-b-Math.sqrt(disc))/(2*a);
}
public double getSolutions2(){
return (-b+Math.sqrt(disc))/(2*a);
}
}
public class QuadraticEqn {
private double a, b, c;
public QuadraticEqn(double x, double y, double z){
a=x;
b=y;
c=z;
}
private double disc = b*b-4*a*c;
public boolean hasSolutions(){
if(disc>=0)
return true;
else
return false;
}
public double getSolutions1(){
return (-b-Math.sqrt(disc))/(2*a);
}
public double getSolutions2(){
return (-b+Math.sqrt(disc))/(2*a);
}
}
import java.util.Scanner;
public class QuadraticEquationTest {
public static void main(String[] args) {
Scanner values = new Scanner(System.in);
System.out.println("enter values for a, b, c:");
double a=values.nextDouble();
double b=values.nextDouble();
double c=values.nextDouble();
QuadraticEqn qe = new QuadraticEqn(a, b, c);
if (qe.hasSolutions())
System.out.println(qe.getSolutions1()+" "+qe.getSolutions2());
else
System.out.println("No real solutions");
}
}
主要的 class 应该打印出给定输入的真实解决方案。我在这个问题上被困了几个小时。我似乎无法弄清楚我做错了什么。我总是得到错误的答案。请帮忙!
您对
有疑问private double disc = (b*b)-(4*a*c);
当您创建一个 QuadraticEqn
时,变量 disc
立即被赋予一个值,但是,它在您保存 a、b 和 c 之前被赋予一个值。因此它创建 disc
就好像 a、b 和 c 都为 0。
要修复它,请在构造函数中更新 disc
。
public class QuadraticEqn {
private double a, b, c, disc; //We're created before the constructor
//runs with default values of 0!
public QuadraticEqn(double x, double y, double z){
a=x;
b=y;
c=z;
disc = b*b-4*a*c; //Give me a value after we know what the others are!
}
public boolean hasSolutions(){
if(disc>=0)
return true;
else
return false;
}
public double getSolutions1(){
return (-b-Math.sqrt(disc))/(2*a);
}
public double getSolutions2(){
return (-b+Math.sqrt(disc))/(2*a);
}
}