完成一个 java application应用程序,把已知字符串(在程序中赋初值或通过键盘输入) “a=3.2&b=20&c=1.1” 作为一元二次方程 ax2+bx+c=0 的a、b、c三个参数值的取值描述,并求解此方程的根。
主要思路是利用String类的index方法获得a,b,c在输入字符串中的位置,再利用substring截取,最后转换为double型。
import java.util.*;
public class sp131 {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
System.out.println("输入格式为a=3.2&b=20&c=1.1\nPlease input:");
String name = in.nextLine();
//获取a所对应数字两边的=和&的索引,以截取数字
int indexa1 = name.indexOf("=");
int indexa2 = name.indexOf("&");
//获取b,同上
int indexb1 = name.indexOf("=",name.indexOf("=")+1);
int indexb2 = name.indexOf("&",name.indexOf("&")+1);
//获取c,同上
int indexc1 = name.indexOf("=",name.indexOf("=",name.indexOf("=")+1)+1);
int indexc2 = name.length();
//通过index截取数字
String a = name.substring(indexa1+1, indexa2);
String b = name.substring(indexb1+1, indexb2);
String c = name.substring(indexc1+1, indexc2);
//截取的数字为字符串,将它们转换为double类型
double a1 = Double.parseDouble(a);
double b1 = Double.parseDouble(b);
double c1 = Double.parseDouble(c);
if((Math.pow(b1,2)-4*a1*c1)<0){ //Δ<0无解
System.out.println("方程无解");
}
else{
if((Math.pow(b1,2)-4*a1*c1)==0){ //Δ=0有唯一解
double x= (-b1/(2*a1));
System.out.println("方程有唯一解:" + x);
}
else{ //Δ>0有两个不同解
double x1= ((-b1+Math.sqrt(Math.pow(b1,2)-4*a1*c1))/(2*a1));
double x2= ((-b1-Math.sqrt(Math.pow(b1,2)-4*a1*c1))/(2*a1));
System.out.println("方程有两个解:" + x1+"和"+x2);
}
}
}
}
结果