2015-10-31 57 views
0

我正在製作一個方法presentParticiple,返回一個單詞EnglishWord的現在分詞。當我println時,Char不會添加到我的字符串中?

當我運行程序並且英語字符以輔音結尾時(第2個if語句),我聲明的字符不會被添加。我做錯了什麼?

private String ending1 = ".*[b,c,d,f,g,h,j,k,l,m,n,p,q,r,s,t,v,w,x,y,z]e"; 
private String consonant = ".*[b,c,d,f,g,h,j,k,l,m,n,p,q,r,s,t,v,w,x,y,z]"; 

public void run() { 
    presentParticiple("jam");   
} 

private String presentParticiple(String EnglishWord) { 
    String correctWord = ""; 
    if (EnglishWord.endsWith(ending1)) { 
     correctWord = EnglishWord.substring(0,EnglishWord.length()-1)+"ing"; 
    } 

    else if (EnglishWord.endsWith(consonant)) { 
     char ch = EnglishWord.charAt(EnglishWord.length()); 
     correctWord = EnglishWord.substring(0, EnglishWord.length())+ch+"ing"; 


    } else { 
     correctWord = EnglishWord+"ing"; 
    } 
    println(correctWord); 
    return correctWord; 
} 
+1

'String'中的最後一個字符的索引爲'length() - 1'。 – Cinnam

+1

Java中的索引大多數情況下從0開始,這意味着最後一個索引將是'lengt - 1'。 – Pshemo

+1

另外'endsWith'不使用正則表達式(和字符類'[...]''不需要像'''這樣的分隔符,所以只需要寫'。* [bcdfg ...]'或者使用交集消除範圍內不需要的字符'az') – Pshemo

回答

0

以下是一些可行的代碼(包含上述建議)。

public class EnglishTest 
{ 
    public static void main (String[] args) 
    { 
    String[] words = { "jam", "rue", "raze", "knock", "need" }; 
    for (String word : words) 
     presentParticiple (word); 
    } 

    private static final String ending1 = ".*[b-df-hj-np-tv-z]e"; 
    private static final String consonant = ".*[b-df-hj-np-tv-z]"; 

    private static String presentParticiple (String englishWord) 
    { 
    String correctWord = ""; 
    if (englishWord.matches (ending1)) 
     correctWord = englishWord.substring (0, englishWord.length() - 1) + "ing"; 
    else if (englishWord.matches (consonant)) 
    { 
     char ch = englishWord.charAt (englishWord.length() - 1); 
     correctWord = englishWord + ch + "ing"; 
    } 
    else 
     correctWord = englishWord + "ing"; 

    System.out.println (correctWord); 
    return correctWord; 
    } 
} 

雖然你的算法有問題。例如嘗試'敲'。

+0

是的,我認爲它是有效的,但是如果在單詞的任何位置有一個輔音,匹配方法是否會返回true? – Alex5207

+0

立即嘗試,'rue'和'raze'會給出不同的結果。 – dmolony

相關問題