2013-02-20 34 views
0

我想知道爲什麼它不起作用,爲什麼我不能使用變量a和b的CHAR數據類型。關鍵是,如何相應地比較數字(pr)的第一個和最後一個數字。如何比較由子串創建的字符串?

String a, b; 
for (int i=100; i<1000;i++) { 
    for (int j=100; j<1000;j++) { 
     pr=j*i; 
     a = String.valueOf(pr).substring(0, 1); 
     b= String.valueOf(pr).substring(4, 5); 

     if ((a==b)) { 
      System.out.println(pr); 
     } 
    } 
} 
+1

如果你想使用「字符」數據類型,附加的charAt()。 – merlin2011 2013-02-20 06:21:04

+0

從技術上講,只要它小於2^15-1(爲了得到預期的結果),他就可以將一個int轉換爲char。......壞習慣,但合法 – 2013-02-20 06:21:44

回答

3

使用equals功能
a.equals(b)

如果你想忽略大小寫然後用
a.equalsIgnoreCase(b)

+0

不清楚爲什麼案例對數字很重要? – merlin2011 2013-02-20 06:20:06

+1

@ merlin2011這是關於對象,而不是數字http://stackoverflow.com/questions/7311451/difference-between-equals-and-instanceof – MrLore 2013-02-20 06:21:11

+0

,因爲他提到了它的一個字符串..所以只是爲了讓他知道忽略大小寫也是可以的..所以在將來它會幫助他 – asifsid88 2013-02-20 06:21:14

1

這不是JavaScript才能使用==的字符串比較。

轉到了equals method

+0

真的嗎?如果只是這不是一個騙局,而且有人還沒有在五分鐘前發佈過...... – 2013-02-20 06:25:27

1

在Java中,運營商==比較對象的身份,因此,如果有String類型的兩個對象具有相同的內容,==將返回false他們:

String x = new String ("foo"); 
String y = new String ("bar"); 
if (x == y) 
    System.out.println ("Equal"); 
else 
    System.out.println ("Now equal"); // This will be printed 

爲了要按內容比較字符串對象,而不是按身份,則需要使用equals()這樣的方法:

if (x.equals (y)) 
    System.out.println ("Equal"); // This will be printed 
else 
    System.out.println ("Now equal"); 

注意,如果xnull,然後x.equals (y)將拋出NullPointerExceptionx == y將返回false如果ynulltrue如果ynull。爲了防止NullPointerException你需要做的是這樣的:

if (x == null && y == null || x != null && x.equals (y)) 
    System.out.println ("Equal"); // This will be printed 
else 
    System.out.println ("Now equal");