计算器问题
Calculator issue
我正在做一个计算器应用程序,但遇到一个问题。我分不清负数和减法。我使用此代码将所有数字分开。
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
中只有“-
”。
我该怎么做?
谢谢。
如果 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]
。 With 6-3
, [6.0, 3.0]
(这是正确的,因为减号表示减法,而不是负数)。
这没有考虑多个主要缺点,比如 --3+6
。如果你愿意,你所要做的就是连续检测多个空字符串,看看它们是偶数还是奇数。
我正在做一个计算器应用程序,但遇到一个问题。我分不清负数和减法。我使用此代码将所有数字分开。
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
中只有“-
”。
我该怎么做?
谢谢。
如果 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]
。 With 6-3
, [6.0, 3.0]
(这是正确的,因为减号表示减法,而不是负数)。
这没有考虑多个主要缺点,比如 --3+6
。如果你愿意,你所要做的就是连续检测多个空字符串,看看它们是偶数还是奇数。