[英]startsWith(String) method and arrays
我必須把一根繩子轉換成豬皮。 對於piglatin有三個規則,其中一個是:
如果英語單詞以元音開頭,則返回英文單詞+“yay”作為piglatin版本。
所以我試着這樣做,老實說期望得到一個錯誤,因為startsWith()方法接受參數的字符串而不是數組。
public String pigLatinize(String p){
if(pigLatRules(p) == 0){
return p + "yay";
}
}
public int pigLatRules(String r){
String vowel[] = {"a","e","i","o","u","A","E","I","O","U"};
if(r.startsWith(vowel)){
return 0;
}
}
但如果我不能使用數組,我必須做這樣的事情
if(r.startsWith("a")||r.startsWith("A")....);
return 0;
並測試每個元音不包含y會占用大量空間,而我個人覺得它看起來會比較混亂。
在我寫這篇文章時,我正在考慮以某種方式通過迭代測試它。
String vowel[] = new String[10];
for(i = 0; i<vowel[]; i++){
if(r.startsWith(vowel[i]){
return 0;
}
我不知道迭代的嘗試是否有意義。
將所有這些字符放在HashSet中,然后執行查找以查看字符是否有效並相應地返回0。
請查看HashSet插入/查找的一些示例。 它應該是直截了當的。
希望這可以幫助。
你的代碼:
String vowel[] = new String[10];
for(i = 0; i<vowel[]; i++){
if(r.startsWith(vowel[i]){
return 0;
}
}
實際上是非常接近應該工作的解決方案(假設您實際上在數組中放置了一些值)。
您需要輸入什么值,正如您所提到的,您可以使用元音的所有可能值填充數組。 那些當然是
String[] vowel={"a","A","e","E","i","I","o","O","u","U"};
現在你有了這個,你想要在數組上循環(當你計算出來)並進行檢查:
public int pigLatRules(String r){
final String[] vowels={"a","A","e","E","i","I","o","O","u","U"};
for(int i = 0; i< vowels.length; i++){
if(r.startsWith(vowels[i])){
return 0;
}
}
return 1;
}
但是,您可以對此進行一些改進。 有些是最佳實踐,有些只是選擇,有些是性能。
至於最佳實踐,您當前正在從此函數返回一個int。 您最好將此函數的結果更改為布爾值(如果您沒有遇到它們,我建議您查找它們)。
至於一個選擇,你說你不喜歡有一個帶有upercase和小寫元音的數組。這里有一些信息。 字符串上有很多方法http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html其中一個是toLowerCase(),你可以猜測它可以降低整個字符串的大小。 如果你對你傳入函數的工作這樣做,你就需要減少一半的支票。
你可以進入更多的東西,但這只是一點點。
將所有元音放在一個字符串中,抓住你正在測試的單詞中的第一個字符,然后查看你的字符是否在所有元音的字符串中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.