首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算器问题

计算器问题
EN

Stack Overflow用户
提问于 2016-11-07 14:45:13
回答 1查看 84关注 0票数 0

我正在做一个计算器应用程序,我有一个问题。我分不清负数和减法。我用这个代码把所有的数字分开。

代码语言:javascript
复制
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中,只有"-”。我该怎么做?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-07 15:41:20

如果string8是空字符串,您可以假设它来自前导减号。将最内部的for循环替换为:

代码语言:javascript
复制
                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说,这并没有考虑到多个领先的缺点。如果您愿意,只需检测一行中的多个空字符串,并查看其中是否有偶数或奇数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40467937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档