2013-11-28 129 views
1

我有两个我想比较的整数。第一个整数是从utf-8的一个字节创建的,第二个整数是我想检查它是否相等的整数。int A不等于int B

int a = 106; 
int b = (int)byteArray[0]; //which actually equals 106 when you printstatement it 

但是....

(a==b) //always equals false 
int i = 0; While(b != i) { println(i); i++;} //eventually escapes the loop and is true 

创建时也原语引用?而且,除非我一直算到106,否则为什么a不等于b?

有没有更好的方法来比较字节?因为我尝试过所有形式的变量,但它们也不起作用。

+1

创建一个我们可以编译和运行的SSCCE。 –

+2

我刚刚为此创建了一个SSCCE,并将输出视为true。 'byte b1 = 106; \t \t int a = 106; \t \t int b =(int)b1; \t \t System.out.println(a == b);'。你能说出它与我使用的SSCCE有什么不同吗? – SudoRahul

+1

这不是一个SSCCE。特别是,它不是独立的。 – Grodriguez

回答

4

问题出在你的代码的其他地方(在你没有显示的部分)。这就是为什么你被建议提供SSCCE

下按预期工作(即打印true):

public class Test 
{ 
    public static void main(String[] args) throws Exception 
    { 
     byte[] byteArray = new byte[] { 106 }; 
     int a = 106; 
     int b = (int) byteArray[0]; 
     if (a == b) 
      System.out.println("true"); 
    } 
} 

最大的可能是,在你的代码byteArray[0]不包含106的SSCCE将显示这一点。

+1

+1 s /很可能/当然是2 + 2是4/ – Ingo

+0

原来,这只是我的代码的逻辑,而且以后我不小心重新分配了它。我以为我只是发疯了一秒钟。我会删除这个问题,以免尴尬,但我不知道如何,因为这是我的第一个问题。 – user3044482

+0

这就是为什么SSCCE有帮助:) – Grodriguez

相关问题