2014-03-05 88 views
0
private boolean CharToString(){ 
    String lineOfText = "XXXXXX"; 
    String desiredResult = "X"; 
    String actualResult = "initialised value"; 
    for(int i = 0; i < lineOfText.length(); i ++){ 
     actualResult = Character.toString(lineOfText.charAt(i)); 
     } 
    if(desiredResult == actualResult){ 
     return true; 
    } else{ 
     return false; 
    } 
} 

因此,基本上,這個代碼是什麼,我有一個再現,但在設計上突出了我認爲是問題之後很長一段時間診斷「字符串」類型和測試。如您所見,它將actualResult的值設置爲沿着lineOfText的當前位置處字符的'char'值。 每個值都用於輸出「X」作爲字符串(從char轉換而來)。「字符」類型不轉換爲預期

然而,不知何故對我來說,儘管actualResultdesiredResult都輸出「X」以我調試drawText()方法(我不知道如何使用控制檯日誌......),該方法返回false,表明兩個字符串變量是不等於

奇怪的是,如果我要將if() else更改爲switch(),它將返回true(即按預期工作)。

我試着用搜索引擎和搜索StackOverflow的,但我的搜索字詞可能是窮/錯誤的,因爲我沒有得到任何有用的結果:(

任何幫助將不勝感激,和對不起,如果這是一個愚蠢的問題 - 我已經嘗試了很長時間瞭解自己...

ps是否有一個很好的圖形地圖編輯器可以在任何地方在線?編輯一個.txt文件來創建一個地圖似乎過於複雜,並且很難保持一致性或在大型/複雜地圖的發展中的一致性...我認爲必須有SOMETHING,你會怎樣做一個3D的Java遊戲?

回答

1

不要使用==比較字符串。始終使用equals(),因爲==只比較它們指向相同的內存地址,在這種情況下他們不會。

private boolean CharToString(){ 
String lineOfText = "XXXXXX"; 
String desiredResult = "X"; 
String actualResult = "initialised value"; 
for(int i = 0; i < lineOfText.length(); i ++){ 
    actualResult = Character.toString(lineOfText.charAt(i)); 
    } 
if(desiredResult.equals(actualResult)){ 
    return true; 
} else{ 
    return false; 
} 
} 

應該這樣做

+0

哦!謝謝! ......如果只有Eclipse回來了,就會發出警告。 – ZOMGbies

+0

@ZOMGbies使用Netbeans,你會得到這個警告。 :) – WonderWorld

0

要比較兩個字符串引用不同的內存位置,你應該使用:

if(desiredResult.equals(actualResult) { 
    return true; 
} else { 
    return false; 
} 

如果案件本來:

String desiredResult = "test"; 
String actualResult = desiredResult; 

在這種情況下,您可以使用if(desiredResult == actualResult),但使用equals()會做更好的練習。

+0

謝謝你的幫助! :) – ZOMGbies

相關問題