我正在做一个计算器应用程序,我有一个问题。我分不清负数和减法。我用这个代码把所有的数字分开。
ArrayList<Double> doubles;
String[] strings1 = string.split("\\*");
for (String string2 : strings1) {
String[] string3 = string2.split("÷");
for (String string4 : string3) {
String[] string5 = string4.split("\\+");
for (String string6 : string5) {
Log.e("Point_1", "String5 " + string5.toString());
Log.e("Point_1", "String6 " + string6);
String[] string7 = string6.split("\\-");
for (String string8 : string7) {
doubles.add(Double.parseDouble(string8));
}
}
}
}我得到的是[number1,number2,number3 ...](它们都是正的),在另一个ArrayList操作符中,比如[+,-,+,*,- ...]。我需要的是首先输入ArrayList(doubles)所有的数字,但如果它们是负数,则为负数。让我给你举个例子。如果我们有一个像"-3+6“这样的字符串,那么在双数中应该是数字:-3;6和在第二个ArrayList中只有"+”。反之亦然,如果我们有"6-3“,那么在双数中,我们应该有:6;3,在第二个ArrayList中,只有"-”。我该怎么做?
谢谢。
发布于 2016-11-07 15:41:20
如果string8是空字符串,您可以假设它来自前导减号。将最内部的for循环替换为:
int index = 0;
while (index < string7.length) {
String string8 = string7[index];
if (string8.isEmpty()) { // assume there was a leading minus here
// reverse sign of next double
index++;
doubles.add(-Double.parseDouble(string7[index]));
} else {
doubles.add(Double.parseDouble(string8));
}
index++;
}有了这个更改,给定字符串-3+6,代码就会给出[-3.0, 6.0]。对于6-3,[6.0, 3.0] (这是正确的,因为减号表示减法,而不是负数)。
--3+6说,这并没有考虑到多个领先的缺点。如果您愿意,只需检测一行中的多个空字符串,并查看其中是否有偶数或奇数。
https://stackoverflow.com/questions/40467937
复制相似问题