我正在解决一个方程,但我希望使用常数来编写我的解决方案。
我正在使用的方法叫做分解,它将方程分解成常数。问题在于,当我分割一个带有负常数的方程时,会产生一个带有常数绝对值的数组。如何在仍然使用正则表达式的情况下实现减号?
如果输入是
有用的奖励:是否有一种方法可以删除我拆分时创建的空元素?例如,如果我键入方程式
代码:
我正在使用的方法叫做分解,它将方程分解成常数。问题在于,当我分割一个带有负常数的方程时,会产生一个带有常数绝对值的数组。如何在仍然使用正则表达式的情况下实现减号?
如果输入是
ax+by=c
,输出应该是{a,b,c}
。有用的奖励:是否有一种方法可以删除我拆分时创建的空元素?例如,如果我键入方程式
2x+3y=6
,我最终会得到一个“原始”数组,其中包含元素{2,,3,,6}
。代码:
public static int[] decompose(String s)
{
s = s.replaceAll(" ", "");
String[] termRaw = s.split("\\D"); //Splits the equation into constants *and* empty spaces.
ArrayList<Integer> constants = new ArrayList<Integer>(); //Values are placed into here if they are integers.
for(int k = 0 ; k < termRaw.length ; k++)
{
if(!(termRaw[k].equals("")))
{
constants.add(Integer.parseInt(termRaw[k]));
}
}
int[] ans = new int[constants.size()];
for(int k = 0 ; k < constants.size(); k++) //ArrayList to int[]
{
ans[k] = constants.get(k);
}
return ans;
}
2x+3y=6
,您期望得到什么输出? - Tim Biegeleisen{2,3,6}
。一般来说是{a,b,c}
。 - Ian Lx+y=5
呢? - anubhava1x+1y=5
。不过,我很乐意接受解决这个问题的方案。 - Ian L