簡體   English   中英

startsWith(String)方法和數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM