繁体   English   中英

计算器问题

[英]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] 对于6-3[6.0, 3.0] (这是正确的,因为减号表示减法,而不是负数)。

这没有考虑多个领先的缺点,例如--3+6 如果需要,您要做的就是连续检测多个空字符串,并查看它们中是否有偶数或奇数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM