java - Android 计算器给出错误答案

标签 java android calculator

我正在制作一个安卓单行计算器。到目前为止,当我用 javascript、c++ 和 c# 编写这个计算器时,它可以工作,但我无法让它在 android (java) 中工作。这是我的代码:

            String seq = String.valueOf(sec.getText());
            ArrayList<Integer> allNums = new ArrayList<Integer>();
            int i = 0; 
            ArrayList<String> allSigns = new ArrayList<String>();
            String currentNums = "";
            for (i = 0; i< seq.length(); i++)
            {
                if (seq.charAt(i) != '+' && seq.charAt(i) != '-' && seq.charAt(i) != '*' && seq.charAt(i) != '/')
                {
                    currentNums+=seq.charAt(i);
                }
                else
                {
                    allNums.add(Integer.parseInt(currentNums));
                    currentNums="";
                    allSigns.add(String.valueOf(seq.charAt(i)));
                }
            }
            allNums.add(Integer.parseInt(currentNums));

            int result = (Integer)allNums.get(0);
            for (i = 1; i <= allNums.size(); i++)
            {
                if (allSigns.get(i-1) == "+")
                    result+=allNums.get(i);
                else if (allSigns.get(i-1) == "-")
                    result-=allNums.get(i);
                else if (allSigns.get(i-1) == "*")
                    result*=allNums.get(i);
                else if (allSigns.get(i-1) == "/")
                    result/=allNums.get(i);
                else
                {
                    sec.setText(String.valueOf(result));
                    break;
                }
            }

我通过 onClick 事件调用该函数。该应用程序不会崩溃,但只给出第一个数字作为答案。例如:34+31-4*8/1 它返回 34。有什么想法吗?

最佳答案

您使用 == 运算符来比较字符串值,这是不正确的。对于对象(包括字符串),== 比较引用以确定它们是否引用同一个对象。

要比较字符串值,请使用 String#equals相反:

if ("+".equals(allSigns.get(i-1)))

关于java - Android 计算器给出错误答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16407487/

相关文章:

java - 简单计算器 - 文本字段问题

java - 如何在 ScrollPane 中进行缩放

android - 保存独立应用程序时出错

android - 删除 JCenter() 后使用 Android YouTube 视频播放器 'com.pierfrancescosoffritti.androidyoutubeplayer:core:10.0.5' 时出现错误

java - 自定义数学函数与提供的数学函数?

javascript - JS中如何将位数限制在6到4之间? (输入字段类型数字和只读)

java - Listview.setAdapter...当我从另一个选项卡返回时崩溃

java - 如何使用 RowMatrix.columnSimilarities 的输出

java - 如何使用 jersey 在 Java IDE 中完全模拟客户端-服务器 Restful Web 服务,而无需部署到 Web 服务器?

java - Timer 和 Runnable 有什么区别?