解方程器
可以解一元一次一元二次方程{:10_256:} public class EquationReducer {public static final String DIGITAL="-?\\d+\\.?\\d*";
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
String equation=scan.next();
System.out.println(Arrays.toString(reduce(equation)));
scan.close();
}
public static double[] reduce(String equation){
if(equation.matches(DIGITAL
+ "x"
+ "\\+"
+ DIGITAL
+ "="
+ DIGITAL)){
double[] args=new double;
String[] parts=equation.split("x\\+");
args=Double.parseDouble(parts);
args=Double.parseDouble(parts.split("="));
args=Double.parseDouble(parts.split("="));
if(args!=0.0){
System.out.println(Arrays.toString(args));
double solution=(args-args)/args;
return new double[]{solution};
}
return null;
}
if(equation.matches(DIGITAL+
"x\\^2"+
"\\+"+
DIGITAL+
"x"+
"\\+"+
DIGITAL+
"="+
DIGITAL)){
double[] args=new double;
String[] firstSplitParts=equation.split("x\\^2\\+");
args=Double.parseDouble(firstSplitParts);
String[] secondSplitParts=firstSplitParts.split("x\\+");
args=Double.parseDouble(secondSplitParts);
args=Double.parseDouble(secondSplitParts.split("="));
args=Double.parseDouble(secondSplitParts.split("="));
System.out.println(Arrays.toString(args));
double delt=Math.sqrt((Math.pow(args,2.0)-4*args*(args-args)));
if(delt>0){
double solution1=(-args+delt)/2*args;
double solution2=(-args-delt)/2*args;
return new double[]{solution1,solution2};
}else{
System.out.println("无解!");
return null;
}
}
return null;
}
}
页:
[1]