鱼C论坛

 找回密码
 立即注册
查看: 1952|回复: 1

[技术交流] 解方程器

[复制链接]
发表于 2019-12-5 06:31:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
可以解一元一次一元二次方程
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-12-5 06:31:47 | 显示全部楼层
  1. public class EquationReducer {
  2.        
  3.         public static final String DIGITAL="-?\\d+\\.?\\d*";

  4.         public static void main(String[] args) {
  5.                 Scanner scan=new Scanner(System.in);
  6.                 String equation=scan.next();
  7.                 System.out.println(Arrays.toString(reduce(equation)));
  8.                 scan.close();
  9.         }
  10.         public static double[] reduce(String equation){
  11.                 if(equation.matches(DIGITAL
  12.                                 + "x"
  13.                                 + "\\+"
  14.                                 + DIGITAL
  15.                                 + "="
  16.                                 + DIGITAL)){
  17.                         double[] args=new double[3];
  18.                         String[] parts=equation.split("x\\+");
  19.                         args[0]=Double.parseDouble(parts[0]);
  20.                         args[1]=Double.parseDouble(parts[1].split("=")[0]);
  21.                         args[2]=Double.parseDouble(parts[1].split("=")[1]);
  22.                         if(args[0]!=0.0){
  23.                                 System.out.println(Arrays.toString(args));
  24.                                 double solution=(args[2]-args[1])/args[0];
  25.                                 return new double[]{solution};
  26.                         }
  27.                         return null;
  28.                 }
  29.                 if(equation.matches(DIGITAL+
  30.                                 "x\\^2"+
  31.                                 "\\+"+
  32.                                 DIGITAL+
  33.                                 "x"+
  34.                                 "\\+"+
  35.                                 DIGITAL+
  36.                                 "="+
  37.                                 DIGITAL)){
  38.                         double[] args=new double[4];
  39.                         String[] firstSplitParts=equation.split("x\\^2\\+");
  40.                         args[0]=Double.parseDouble(firstSplitParts[0]);
  41.                         String[] secondSplitParts=firstSplitParts[1].split("x\\+");
  42.                         args[1]=Double.parseDouble(secondSplitParts[0]);
  43.                         args[2]=Double.parseDouble(secondSplitParts[1].split("=")[0]);
  44.                         args[3]=Double.parseDouble(secondSplitParts[1].split("=")[1]);
  45.                         System.out.println(Arrays.toString(args));
  46.                        
  47.                         double delt=Math.sqrt((Math.pow(args[2],2.0)-4*args[0]*(args[2]-args[3])));
  48.                         if(delt>0){
  49.                                 double solution1=(-args[1]+delt)/2*args[0];
  50.                                 double solution2=(-args[2]-delt)/2*args[0];
  51.                                 return new double[]{solution1,solution2};
  52.                         }else{
  53.                                 System.out.println("无解!");
  54.                                 return null;
  55.                         }
  56.                        
  57.                 }
  58.                 return null;
  59.         }

  60. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 09:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表