«如果»疯狂

use*_*491 0 java eclipse android

我尝试编写一个计算器,以便学习android dev中的开头,但我面临着一个人类无法理解的问题.我希望你不是人.

看看我的If条件:

    if (result != "")
    {
        textView.append("0");

    }
Run Code Online (Sandbox Code Playgroud)

(您可能会注意到我使用了«result!=""»而不是isEmpty()方法,因为API7中不支持isEmpty().

好.现在看看我的两个"结果"变量

result  "" (id=830012674816)    
count   0   
hashCode    0   
offset  0   
value    (id=830012674848)  

result  "" (id=830022154000)    
count   0   
hashCode    0   
offset  0   
value    (id=830022154032)  
Run Code Online (Sandbox Code Playgroud)

(我从Eclipse Debugger复制了两个结果)

第一个结果是OK:这是我在启动程序时得到的结果:if是否完成了工作并且通过了.第二个似乎完全相同,但由于未知原因,它进入if并追加零.我按下"加号"按钮后出现此问题.

任何的想法 ?

如果您发现缺少信息或者您不了解问题,可以在此处找到整个工作区(正在进行中):http://www.sendspace.com/file/udp5d3.要重现此问题,请在程序启动时按"零"按钮,并注意它通常不会出现.然后输入任何数字,如"104","7"或"73",按"加号"按钮,然后"零".零不应该出现在这里.

谢谢 :)

Psh*_*emo 5

不要比较字符串(或任何对象)!=.使用equals()!("".equals(result))!(result.equals(""))

== 用于检查引用是否包含相同的对象,而不是对象包含相同的值,

例如

Integer i1=new Integer(1);
Integer i2=new Integer(1);
Integer i3=i1;
//checking references
System.out.println(i1==i2);//false
System.out.println(i1==i3);//true

//checking values
System.out.println(i1.equals(i2));//true
System.out.println(i1.equals(i3));//true
Run Code Online (Sandbox Code Playgroud)