Q╜先森 发表于 2019-12-5 06:31:02

解方程器

可以解一元一次一元二次方程{:10_256:}

Q╜先森 发表于 2019-12-5 06:31:47

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]
查看完整版本: 解方程器