二次方程求解器 nan 平方根正数
Quadratic equation solver nan square root positive number
我正在编写一个非常简单的二次方程求解器,但即使平方根为正(我使用的示例是 1x^2+5x+6,其中 b^2=25 和 4,答案仍然是 nan *a*c= 24) 但它仍然是 nan。请帮忙。
import java.util.*;
import java.lang.Math;
public class HelloWorld {
public static void main (String[] args){
System.out.println ("type quadratic equation please use format ax^2+/-bx+/-c");
Scanner userInput=new Scanner(System.in);
String userEquation=userInput.next();
char a=(userEquation.charAt(0));
char b=(userEquation.charAt(5));
char c=(userEquation.charAt(8));
System.out.println(a);
System.out.println(b);
System.out.println(c);
double p1=4*a*c;
double p2=2*a;
double p3=-b;
double p4=b*b;
double p5=p4-p1;
double p6=Math.sqrt(p5);
double pa7=-b+p6;
double pb7=-b-p6;
double pa8=pa7/2*a;
double pb8=pb7/2*a;
System.out.println("x1= "+pa8+ " x2="+pb8);
}
}
您永远不会将 char
解析为 double
来进行数学运算。
试试这个:
double a=Double.parseDouble(userEquation.charAt(0)+"");
double b=Double.parseDouble(userEquation.charAt(5)+"");
double c=Double.parseDouble(userEquation.charAt(8)+"");
这会将您的变量类型更改为 double
,这样您就可以继续编写代码并进行数学运算。
我同意@Gaël 的评论。为您的其他变量(p1
、p2
等)添加一个打印语句,并注意当您保留变量 a
、b
和 [=18= 时的区别] 作为类型 char
或类型 double
。
我正在编写一个非常简单的二次方程求解器,但即使平方根为正(我使用的示例是 1x^2+5x+6,其中 b^2=25 和 4,答案仍然是 nan *a*c= 24) 但它仍然是 nan。请帮忙。
import java.util.*;
import java.lang.Math;
public class HelloWorld {
public static void main (String[] args){
System.out.println ("type quadratic equation please use format ax^2+/-bx+/-c");
Scanner userInput=new Scanner(System.in);
String userEquation=userInput.next();
char a=(userEquation.charAt(0));
char b=(userEquation.charAt(5));
char c=(userEquation.charAt(8));
System.out.println(a);
System.out.println(b);
System.out.println(c);
double p1=4*a*c;
double p2=2*a;
double p3=-b;
double p4=b*b;
double p5=p4-p1;
double p6=Math.sqrt(p5);
double pa7=-b+p6;
double pb7=-b-p6;
double pa8=pa7/2*a;
double pb8=pb7/2*a;
System.out.println("x1= "+pa8+ " x2="+pb8);
}
}
您永远不会将 char
解析为 double
来进行数学运算。
试试这个:
double a=Double.parseDouble(userEquation.charAt(0)+"");
double b=Double.parseDouble(userEquation.charAt(5)+"");
double c=Double.parseDouble(userEquation.charAt(8)+"");
这会将您的变量类型更改为 double
,这样您就可以继续编写代码并进行数学运算。
我同意@Gaël 的评论。为您的其他变量(p1
、p2
等)添加一个打印语句,并注意当您保留变量 a
、b
和 [=18= 时的区别] 作为类型 char
或类型 double
。