2017-07-25 51 views
0

所以我環顧四周爲一兩天了類似的問題現在看起來這是一個新課題。對於一個小項目,我試圖手動編寫我自己的compareToIgnoreCase()方法,而不使用字符串API。在程序中,用戶輸入一個字符串,類定義將字符串轉換爲char數組。用戶將輸入另一個字符串,並將其與輸入的第一個字符串進行比較。這是我寫的compareTo()方法。我的問題是,如何編輯這個比較時忽略該案例。寫我自己與compareToIgnoreCase方法

public int compareTo(MyString anotherMyString) { 
    if(anotherMyString.sequence[i] > 0) { 
     return 1; 
    } else if(anotherMyString.sequence[i] == 0) { 
     return 0; 
    } else { 
     return -1; 
    } 
} 
+2

我想你錯過了一個循環或遞歸的地方,因爲'i'變量被宣佈無處 –

+2

正在使用'Character'API嗎?你需要支持所有的Unicode字母,還是隻支持A-Z字母? – Andreas

回答

2

假設你確定使用java.lang.Character,一個可能的解決方案忽視的情況是將每個燒焦比較之前爲小寫:

char1 = Character.toLowerCase(char1); 
char2 = Character.toLowerCase(char2); 

// compare char1, char2 
+0

問題說*「不使用字符串的API」*。我會考慮使用的API *字符*會越限太多,但我想只有OP可以說,肯定*([我已經張貼問題OP(https://stackoverflow.com/questions/ 45310354 /寫 - 我 - 擁有 - 與compareToIgnoreCase法#comment77583121_45310354))*。 – Andreas

+0

我以爲他只是不想'java.lang.String' – frozen

+0

是的,任何API是關閉的限制。 –

0

您可以使用以下邏輯,代碼

char charInput[] = new char[]{'A', 'B', 'C'}; 
for (int i = 0; i < charInput.length; i++) 
{ 
    char a = charInput[i]; 
    //This will make your char to lower case if it is in uppercase. 
    if(a >=65 && a<= 90) 
     a+=32; 
    charInput[i] = a; 
} 

所以,基本上我們會轉換小寫字母數組,以便您可以輕鬆地在兩個字符數組之間進行比較。

+0

數字和特殊字符不區分大小寫。此代碼只能將大寫字母轉換爲小寫字母。你不必擔心數字和特殊字符。這個邏輯適用於所有人。 –

+0

我需要循環兩個數組,將它們都轉換爲小寫,然後進行比較? –

+0

是的,你必須以小寫字母轉換這兩個數組。然後循環比較兩個數組。這樣你的所有角色都會變成小寫字母。而且您不會遇到任何區分大小寫的問題。 –