2014-07-03 56 views
0

我正在嘗試編寫一個程序來檢查字符串的前兩個字母和最後兩個字母是否相同。例如,frontAgain(「編輯」);應該返回true。但是,以下程序僅適用於2個字符串,如「ed」。我想,所以我試圖用線條喜歡這可能是一個對象比較的問題:比較java中的數組字符串以獲得布爾值

splitstring[0].equals(splitstring[length - 2]) 
splitstring[0] == splitstring[length - 2] 
splitstring[0].equalsIgnoreCase(splitstring[length - 2]) 

但再次我的程序只工作了像「ED」的字符串。有任何想法嗎?這裏是我的代碼:

public class Mainjazz { 

public static boolean frontAgain(String str){ 

    int length = str.length(); //gets length of string for later use in if statement 

    String[] splitstring = str.split(""); //splits string into an array 

    if((splitstring[0].equals(splitstring[length - 2])) && (splitstring[1].equals(splitstring[length - 1]))){ //checks if first two letters = last two 
     return true; 
    }else{ 
     return false; 

    } 
} 

public static void main(String[] args) { 

    System.out.println(frontAgain("edited")); 


} 

} 

編輯:問題解決了,謝謝:)

+3

它爲什麼會超過2個字符的工作時,你只比較兩個字符? –

回答

2

根據您的算法(和你發佈的代碼),我會用String.toCharArray()像這樣,

public static boolean frontAgain(String str) { 
    if (str != null && str.length() > 1) { 
    char[] chars = str.toCharArray(); 
    int len = chars.length; 
    return chars[0] == chars[len - 2] && chars[1] == chars[len - 1]; 
    } 
    return false; 
} 
0

如果splitstring等於"abcdefgab",然後

splitstring[0].equals(splitstring[length - 2]) 

被實質上等同於

'a'.equals('a') 

如果要比較兩個字符,則需要

int len = splitstring.length; 
splitstring.substring(0, 2).equals(splitstring.substring(len - 2, len); 

,建議,以確保該字符串(非空)至少兩個 - 而且可能四個字符的長度,然後再嘗試比較。

祝你好運。

+0

感謝您的幫助。我很困惑爲什麼'a'.equals('a')不起作用。這應該返回正確的? – user3453211

+0

正確。我把你的目標理解爲比較兩個字符與兩個字符。不是一個。 – aliteralmind

0
public static boolean frontAgain(String str){ 
     String str1 = str.substring(0,2); 
     String str2 = str.substring(str.length() - 2); 
     if (str1.equals(str2)) { 
      return true; 
     } 
     else 
      return false; 
} 

通過獲取字符串的前2個字符和後2個字符並將它們進行比較,這樣做會更簡單。

0

希望這有助於:

public boolean areTheSame(String mystring) { 

     //if you want to compare ignoring the upper cases 
     //mystring = mystring.toLowerCase(); 

     if(mystring.substring(0, 1).equals(
         mystring.substring(mystring.length()-2, 
              mystring.length()-1))){ 
      return true; 
     } 
     else return false; 

}