java中的线性方程

时间:2017-07-18 11:43:25

标签: java string

    String str="2x+5=15";
    //here how to find x
    String res[]=str.split([+=]);
    int x=Integer.parseInt(res[0].charAt(0));
    int y=Integer.parseInt(res[1]);
    int z=Integer.parseInt(res[2]);
    int res=(z-y)/x;
    System.out.println(res[0].charAt(1)+" is "+res);

还有其他方法可以解决这些线性方程吗?我是初学者..而且这种方法看起来很糟糕......

3 个答案:

答案 0 :(得分:0)

你可以尝试做一些事情,比如使用for循环遍历string并检查每个char,如果它是一个特殊的char (+, -, *),那么每当你得到char从上次点击这样的int时获取字符串并将其解析为classpath 'com.android.tools.build:gradle:2.3.3' ,然后进行计算。你需要注意一些事情,但你可以随时询问是否遇到了更多问题。 祝你好运

答案 1 :(得分:0)

模式匹配将帮助您:

String str = "-50000x -50000 = -150000"; //ax+b=c
Pattern p = Pattern.compile("^(-?\\d+)\\s?(x)\\s?\\+?\\s?(-?\\d+)\\s?=\\s?(-?\\d+)$");
Matcher m = p.matcher(str);
double a = 0, b = 0, c = 0;

if (m.find()) {
     a = Double.valueOf(m.group(1));
     b = Double.valueOf(m.group(3));
     c = Double.valueOf(m.group(4));

     double res = (c - b) / a;
     System.out.println(m.group(2) + " is " + res);   //x is 2.0
}

模式:

  • \s用于空格|| \d用于数字
  • 数字x +/-数字=数字
  • 您可以minus或不
  • 您可以在每个元素(运算符/编号)之前或之后有空格
  • 它也会找到像'x'或'y'这样的字母,无论如何,
  • 还可以更好地使用double而不是int进行划分

在google //中键入“java 8 pattern”可以获得详细解释,在那里你可以解释我制作的模式的所有元素

此处完美匹配的示例:Regex101 demo

答案 2 :(得分:0)

import java.util.*;
class stack
{
    public static void main(String[] args) 
    {
    String str="2x+5=15";              //here how to find x
    StringTokenizer st=new StringTokenizer(str,"+=");
    String aa=st.nextToken();
    int x= Character.getNumericValue(aa.charAt(0)); //char to int conversion.
    int y=Integer.parseInt(st.nextToken());
    int z=Integer.parseInt(st.nextToken());

    int res=(z-y)/x;
    System.out.println(res);
        }
    }

以下是您的问题的解决方案。