2013-08-31 67 views
-3

我被要求:寫一個函數boolean succeeds(char a, char b, String s)需要一個字符串s並返回true 如果每次出現字符b總是由字符a成功,否則返回false。需要一些幫助,試圖瞭解此代碼

我碰到這樣的:

while (!s.equals("")) { 
    char c = s.charAt(0); // record first char 
    s = s.substring(1); // cut off first char 


    // if "first char is 'b' and next is 
    // not 'a'", we can return false 
    if (c == b && (s.equals("") || s.charAt(0) != a)) 
     return false;     
} 

return true; 

我不能完全得到我的頭周圍有關係嗎? s.equals""是什麼意思?

+1

這個名字是不言自明的。它檢查's'是否等於'「」',空字符串。 – arshajii

+2

請閱讀關於Java的一些教程,如http://www.javabeginner.com/learn-java/java-string-comparison –

+1

啊哈,我知道這段代碼看起來很熟悉:http://stackoverflow.com/questions/18111857/how -can-i-write-a-function-boolean-succeedschar -a-char-b-string-s-using -se – arshajii

回答

1

第一次出現:

它檢查是否s不是空白String

你可以找到有關!運營商here和'equals()'here的信息。

+0

非常感謝。 X – user2735569

0
while (!s.equals("")) { 

這會簡單地重複下面的代碼,直到s是空字符串,""。由於每次迭代都會切斷一個字符,因此這會一直截斷字符,直到不再剩下字符。

(s.equals("") || s.charAt(0) != a) 

s.equals("")用於檢查是否s是空字符串。這是必要的,因爲如果它一個空字符串,那麼s.charAt將失敗。

||運算符是短路的,這意味着如果第一個表達式爲真,則第二個表達式不會被評估。

+0

非常感謝。 X – user2735569

0

要理解爲什麼String使用.equals()而不是==,您需要了解Java如何存儲數據。在Java中,只能使用==來比較兩個基元(int,float,double)或兩個指針。一個字符串不是一個原始類型。如果你存儲一個int(或其他基元類型),它將存儲數據本身。如果你存儲一個對象,它將存儲一個指向實際對象的地方的指針。如果您創建一個字符串對象

String a = new String("I am a String!"); 

它返回一個指向該字符串的指針,指向內存中的其他位置。現在我們做另一個字符串完全相同的文字:

String b = new String("I am a String!"); 

它返回一個指向不同的位置,因爲它是一個不同對象(注意new關鍵字)。如果你想比較a == b,它將返回false。爲什麼?因爲ab不一樣。它的指針是不同的。如果你這樣做

String c = b; 

c將指向同一個String對象b。如果你想比較它們(b == c)它將返回true。

爲了能夠比較它們的內容,String對象具有.equals()方法。當內容a等於b時,它會在a.equals(b)中返回true。


回到這個問題。 s.equals("")將創建一個沒有內容的新字符串。爲了上面的推理,如果它會檢查s == ""它總是會返回false。

+0

Lovellllllllllllllllllllllll。謝謝 – user2735569

0

在java中,當您看到引號中沒有任何內容時「」表示該對象的值爲空。

所以程序只會在字符串中有一些值(字符)時運行。

!=表示不等於。 !意思不是。

當某人沒有輸入值時,這會停止運行。

所以說

而字符串S的值ins't等於什麼程序將運行。