2013-10-08 56 views
-1

這是我迄今爲止所做的,我設法通過幾個小時的工作到達這裏。我的代碼的問題是,如果我給它一個字符串「abcefg」它將驗證前兩個字符並將其返回爲true。我希望代碼爲我的所有角色做到這一點。我認爲把限制作爲x.length()會做的事情,但由於某種原因,它不會工作。如何使用字符串創建布爾方法?

+2

從不'返回true'。只有'返回false'。這樣你就會返回第一個不連續的集合,否則繼續。 –

+0

好吧,如果我不回答真的,我的程序如何知道它是真的? –

+0

它現在怎麼樣呢現在是'假'?只是扭轉一切。 –

回答

1
public static boolean ConsecutiveCheckerAscending(String x) { 
x = x.toLowerCase(); 

for (int i = 0; i < x.length() - 1; i++) { 
    if ((int)x.charAt(i) + 1 != ((int)x.charAt(i + 1))) 
    { 
     return false; 
    } 
} 
return true; 
} 

public static boolean ConsecutiveCheckerDescending(String x) { 
x = x.toLowerCase(); 

for (int i = 0; i < x.length() - 1; i++) { 
    if((int)x.charAt(i) - 1 != ((int)x.charAt(i + 1))) 
    { 
     return false; 
    } 
} 
return true; 
} 
+0

我愛你!這工作就像一個魅力! –

+0

我剛剛意識到,這不適用於相反的順序。例如:cba將返回錯誤 –

+0

編輯添加降序順序方法 –

1

這裏有許多問題。

首先,您最終可能會跳出charAt(i + 1)調用(檢查您的循環條件)。

其次,你怎麼可能在for循環的主體中返回true?你還沒有檢查過所有的角色!

雖然我認爲你讓這個過於複雜。所有你需要的,以檢查兩個相鄰(即字符串中彼此相鄰)字符是連續做的是

Math.abs(s.charAt(i) - s.charAt(i + 1)) == 1 

你居然甚至不需要鑄造。我們正在檢查兩個字符之間的「距離」是否爲1.

只需將其應用於字符串中每個連續的字符對,並在該行的某處不滿意時返回false。如果您退出循環而沒有返回false,則可以返回true。

+0

我試過了,就像你說的我走出了界限。我應該將它改爲i

+0

@VescoPro它應該是'i arshajii

+0

謝謝,我今天學到了很多東西。 –

0

寫它在匆忙,但它會看起來像this.-

public static boolean ConsecutiveChecker(String x) { 
    boolean consecutive = true; 

    x = x.toLowerCase();   

    for (int i = 0; i < x.length() - 1; i ++) { 
     if ((int) x.charAt(i) + 1 != ((int) x.charAt(i + 1))) { 
      consecutive = false; 
      break; 
     } 
    } 

    return consecutive; 
} 
+0

你的「連續」標誌有什麼意義?爲什麼不只是「返回」? –

+0

好吧,我想我只習慣在我的方法的最後有一個返回句子。 – ssantos

+0

我試過了,不管我輸入的是字符串,它給了我false = /謝謝你的嘗試,雖然這個程序比我預想的要多得多。 –

0

你無法知道是否該字符串是連續的,直到方法結束,所以你不能在返回true中間。當您發現字符串不連續時,您最多可以返回false

爲了給出更多的建議,你是什麼意思的「連續」?是adgkm連續?看看當前的代碼,它會看起來像它;你所檢查的是人物的順序。是abcdcbcd連續?通常「連續」意味着沒有差距。

+0

abcdefg是連續的,或者gfedcba也是連續的,123456是連續的。 –

+0

好的,那麼abcba呢? – Joni

0

在你有return語句的if和else語句中,所以方法在第一次檢查後會返回。您必須僅爲退出條件提供退貨。