2013-06-21 52 views
2

我一直在尋找,我找不到任何地方如何使用3種方法編寫字數。這是目前代碼的樣子。我迷失在如何使用這些方法。我可以做到這一點,而不使用不同的方法,只使用一種。請幫忙!!!使用方法編寫代碼來查找字符串中的字數

public static void main(String[] args) { 
    Scanner in = new Scanner (System.in); 
    System.out.print("Enter a string: "); 
    String s = in.nextLine(); 
    if (s.length() > 0) 
    { 
     getInputString(s); 
    } 
    else 
    { 
     System.out.println("ERROR - string must not be empty."); 
     System.out.print("Enter a string: "); 
     s = in.nextLine(); 
    } 
    // Fill in the body with your code 
} 

// Given a Scanner, prompt the user for a String. If the user enters an empty 
// String, report an error message and ask for a non-empty String. Return the 
// String to the calling program. 
private static String getInputString(String s) { 
    int count = getWordCount(); 
    while (int i = 0; i < s.length(); i++) 
    { 
     if (s.charAt(i) == " ") 
     { 
      count ++; 
     } 
    } 
    getWordCount(count); 
    // Fill in the body 

    // NOTE: Do not declare a Scanner in the body of this method. 
} 


// Given a String return the number of words in the String. A word is a sequence of 
// characters with no spaces. Write this method so that the function call: 
//  int count = getWordCount("The quick brown fox jumped"); 
// results in count having a value of 5. You will call this method from the main method. 
// For this assignment you may assume that 
// words will be separated by exactly one space. 
private static int getWordCount(String input) { 
    // Fill in the body 
} 

} 

編輯: 我已經改變了代碼

private static String getInputString(String s) { 
    String words = getWordCount(s); 
    return words.length(); 
} 


private static int getWordCount(String s) { 
    return s.split(" "); 
} 

但我不能得到字符串轉換爲整數。

+1

看起來像你使用罰款,你用的方法有什麼問題的方法呢? – Stephan

+2

可以在這裏提出具體的問題,但我們不會做你的功課。請在您嘗試過的方式以及卡住的地方非常清楚。 –

+1

'if(s.charAt(i)==「」)'將始終爲假,因爲您在詢問char是否與String相同。 ''''代表空格作爲字符 – Edd

回答

0

我不知道你有什麼麻煩,但我不認爲你需要超過一個,試試這個:它使用拆分拆分字符串中的單詞,並且您可以選擇的定界符

String sentence = "This is a sentence."; 
String[] words = sentence.split(" "); 

for (String word : words) { 
    System.out.println(word); 
} 

那麼你可以做:

numberOfWords = words.length(); 

,如果你想使用3種方法,你可以從你main()方法,這是否爲你調用一個方法,例如:

public String getInputString() { 

    Scanner in = new Scanner (System.in); 
    System.out.print("Enter a string: "); 
    String s = in.nextLine(); 
    if (s.length() > 0) { 
     return s; 
    } else { 
     System.out.println("ERROR - string must not be empty."); 
     System.out.print("Enter a string: "); 
     return getInputString(); 
    } 
} 

public int wordCount(String s) { 

    words = splitString(s) 

    return words.length(); 
} 

public String[] splitString(String s) { 

    return s.split(" "); 
} 
+0

我可以做到這一點,但我必須使用3. – user2509405

+0

umm,在這種情況下,您可以有一種方法接受字符串,該字符串傳遞給此處列出的wordcount方法,該方法調用將字符串拆分的方法 – Stephan

+0

@ user2509405你去了,我爲你做了3個方法 – Stephan

0

使用String.split()方法,如:

String[] words = s.split("\\s+"); 
int wordCount = words.length; 
1

使用trim()split() 1-N空格字符:

private static int getWordCount(String s) { 
    return s.trim().split("\\s+").length; 
} 

trim()的調用是必要的,否則你會得到一個額外的「字「如果字符串中有前導空格。

參數"\\s+"對於將多個空格統計爲單個分隔符是必需的。 \s是「空白」的正則表達式。 +是「1或更多」的正則表達式。

+0

首先,這不能編譯。其次,他應該學習一些東西。 –

+0

@RosdiKasim哎呀!我複製了錯誤的方法簽名(固定)。此外,他現在是否在學習一些東西,我已經添加了一些解釋? – Bohemian

+0

@RosdiKasim:他已經嘗試了一些東西,這就是我們回答 –

1

你可以這樣做:

private static int getWordCount(String input) { 
    return input.split("\\s+").length; 
} 
+0

我試圖將字符串從第一個方法移動到getIntputString。它給了我一個不適用的錯誤,它的構建正確。然後讓int去getWordCount的方法。我無法讓代碼轉向下一個方法。 – user2509405

+1

我可能會建議'「\\ s +」'而不是''「'。簡單地分割每個'\ u0020'幾乎肯定會錯誤地評論這個評論中的單詞,例如,因爲我通常在句點之後使用兩個空格。但總的想法很好。 – cHao

+0

[@ user2509405](http://stackoverflow.com/users/2509405/user2509405)可以複製過去的確切錯誤 – user2509423

3

您已經閱讀方法的名稱,並期待在評論來決定什麼應該在方法內部實現,該值它應該返回。

getInputString方法簽名應該是:

private static String getInputString(Scanner s) { 

    String inputString = ""; 

    // read the input string from system in 
    // .... 

    return inputString; 

} 

getWordCount方法簽名應該是:

private static int getWordCount(String input) { 

    int wordCount = 0; 

    // count the number of words in the input String 
    // ... 

    return wordCount; 
} 

main方法應該是這個樣子:

public static void main(String[] args) { 

    // instantiate the Scanner variable 

    // call the getInputString method to ... you guessed it ... get the input string 

    // call the getWordCount method to get the word count 

    // Display the word count 
} 
1

什麼你需要做的是,統計字符串中的空格數。這是字符串中的單詞數量。

你會看到你的計數會減1,但經過一番思考和錯誤狩獵後,你會找出原因。

快樂學習!

+1

糟糕。如果您查看源代碼,此評論有二十三個空格。但只有二十一個字。並非每個空間都會分開單詞。 – cHao

+0

@cHao,你讀過他的'getWordCount'方法之上的評論嗎? **對於這項任務,你可能會認爲單詞會被一個空格隔開。** –

+0

實際上,我沒有。我傾向於下意識地過濾評論;除非他們指出,否則他們對我來說都是看不見的,或者他們太過分了,或者很滑稽。 – cHao

0

基於您的代碼,我認爲這是你想要做什麼:

private static int getWordCount(String input) { 

    int count = 0; 

    for (int i = 0; i < input.length(); i++) { 
     if (input.charAt(i) == ' ') { 
      count++; 
     } 
    } 

    return count; 
} 

這裏是我做了什麼:

  • 我搬到你「打碼'用正確的方法(getWordCount)。
  • 更正你試圖使用循環(我認爲你有和while循環混淆)
  • 修正你的空格字符檢查(' '" "

有一個在這個代碼中的bug你將需要制定出如何解決:

  • getWordCount("How are you");將回到2時,它應該是3
  • getWordCount("");將返回0
  • getWordCount("Hello");將返回0,當它應該是1

祝你好運!

+0

似乎在問題中提供的代碼已被修改,因爲我發佈了這個 – Edd

+0

是啊...出於某種原因,實際上可以算出單詞的代碼已被刪除。我正在考慮恢復。 – cHao

0

更好地利用溢出的()帶參數的簡單功能空間

int n= str.split(" ").length; 
2
    count=1 //last word must be counted 
       for(int i=0;i<s.length();i++) 
       { 
        ch=s.charAt(i); 
        if(ch==' ') 
        { 
        count++; 
        } 
       }    
+0

一個解釋會很好,它也是與op發佈的相同的代碼。 –

0
public static int Repeat_Words(String arg1,String arg2) 
{ 
    //It find number of words can be formed from a given string 

    if(arg1.length() < 1 || arg2.length() < 1) 
     return 0; 

    int no_words = 99999; 
    char[] str1 = arg1.toCharArray(); 
    char[] str2 = arg2.toCharArray(); 


    for(int x = 0; x < str1.length; x++) 
    { 
     int temp = 0; 
     for(int y = 0; y < str2.length; y++) 
     { 
      if(str1[x] == str2[y]) 
      temp++; 
     } 
     if(temp == 0) 
      return 0; 
     if(no_words > temp) 
      no_words = temp; 

     temp = 0; 
    } 

    return no_words; 
} 
相關問題