2015-11-04 38 views
0

嗨,我是新的和困惑,當談到編程,我正在計算一個程序,計算單詞中的單詞字符串,但它從來沒有計算字符串中的第一個單詞,即使當這是唯一的一個。我知道這不是一個問題,因爲我已經測試過了。任何幫助都感激不盡!這裏是我的代碼WordCount程序不計算第一個字

public class WordCount { 
    public static boolean isWord (String w, int min) { 
     int letters=0; 
      for (int i=0; i<w.length(); i++) { 
       char c=w.charAt(i); 
       boolean l=Character.isLetter(c); 
       if (l=true) { 
        letters++; 
       } 
       else { 
        c=' '; 
       } 
      } 
     if (letters>min) { 
      return true; 
     } 
     else { 
      w=" "; 
     } 
     return false; 
    } 
    public static int countWords (String a, int minLength) { 
     int count=0; 
     for (int i=0; i<a.length(); i++) { 
      if (a.charAt(i)==' ') { 
       String b=a.substring(0, a.indexOf(' ')-1); 
       if (isWord(b, minLength)==true) { 
        count++; 
       } 
      } 
     } 
     return count; 
    } 
     public static void main (String[] args) { 
     System.out.print("Enter a sentence: "); 
     String sentence=IO.readString(); 
     System.out.print("Enter the minimum word length: "); 
     int min=IO.readInt(); 
     if (min<0) { 
      System.out.println("Bad input"); 
      return; 
     } 
     if (sentence.length()<min) { 
      System.out.println("Bad input"); 
      return; 
     } 
     System.out.println("The word count is "+ countWords(sentence,min)); 
    } 
} 
+0

你不能使用'string.split(「」).length'嗎? –

+1

仔細看看if(l = true)'。 Java對* assignment *和* comparison *使用不同的運算符。 – Pshemo

回答

0

問題是,你正在檢查一個空格作爲你的一個單詞的分隔符,所以你真的是數空間,而不是單詞。像「foo」這樣的單詞沒有空格,所以它會返回0,而「foo bar」有一個空格,並且會返回1.要使用「foo bar」輸入(尾部空格)來測試這個嘗試得到正確的計數。

如果您對當前的實現感到滿意,只想「使其工作」,則可以測試以查看修剪後的輸入長度是否大於零,如果是這樣,則在通過您的運行之前在末尾添加一個空格循環。

String sentence=IO.readString(); 
// make sure it is non-null 
if (sentence!=null){ 
    // trim spaces from the beginning and end first 
    sentence = sentence.trim(); 
    // if there are still characters in the string.... 
    if (sentence.length()>0){ 
     // add a space to the end so it will be properly counted. 
     sentence += " "; 
    } 
} 

更簡單的方式來做到這將是你的字符串分割成一個空間使用String.split(),然後計算元素的數組。

// your input 
String sentence = "Hi there world!"; 

// an array containing ["Hi", "there", "world!"] 
String[] words = sentence.split(" "); 

// the number of elements == the number of words 
int count = words.length; 

System.out.println("There are " + count + " words."); 

會給你:

有3個字。