2017-10-20 78 views
-2

出於某種原因,我的代碼正在計算用戶輸入短語中的每個字母。另外,它不會打印字符串中的字符:System.out.println(word + " instances: " + theWord); 我也是BEGINNER程序員,只是把它扔到那裏!計算短語和打印的出現次數

public static int findText(String word, String str){ 
    System.out.println("Enter a word or phrase to be found:"); 
    word = keyboard.nextLine(); 
    int i = 0; 
    theWord = 0; 
    for (i = 0; i < str.length(); i++){ 
    if (str.contains(word) && word.equals(word)){ 
     theWord ++; 
    } 
    } 
    System.out.println(word + " instances: " + theWord); 
    return theWord; 
} 
+2

爲什麼你會把詞作爲參數傳遞:你立即覆蓋它的值。 –

+1

'&& word.equals(word)'? – dave

+1

我已經低估了這個問題,因爲沒有任何對此代碼進行調試的證據。請[編輯]您的問題,向我們展示您的調試未發現的內容,以及關於特定代碼行的具體問題。請參閱:[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)和[如何調試小程序](https://ericlippert.com/2014/03/05 /如何調試的小程序/)。 –

回答

0

我會幫你一把。

如果您在方法中接受兩個Strings,則應在調用該方法之前定義句子和用戶輸入,並在參數中傳遞它們。

然後在findText方法中,通過將每個單詞分隔開一個空格來遍歷每個單詞。

然後,只需檢查用戶輸入的字相匹配,如果是的話,加1到wordCount

那麼,在年底打印wordCount

此外,如果您在findText方法中進行打印,則無需返回int

因此,這裏是什麼,你可能會尋找一個例子:

public static void main(String[] args) { 
     String input = "this is my this is string my this is"; 
     Scanner keyboard = new Scanner(System.in); 
     System.out.println("Enter a word or phrase to be found:"); 
     String userEntry = keyboard.nextLine(); 
     findText(userEntry, input); 

    } 

    public static void findText(String word, String str) { 
     int wordCount = 0; 
     for (String checkWord : str.split(" ")) { 
      if (checkWord.equals(word)) { 
       wordCount++; 
      } 
     } 
     System.out.println(word + " instances: " + wordCount); 
    } 

請注意,這僅是個別單詞的工作,而不是短語,但我希望它會給你怎樣的一些指示繼續。你必須改變一些東西來檢查是否有短語。

+0

謝謝你的幫助!現在我知道在未來類似的情況下該做什麼! – csstudent2x

+0

@ csstudent2x如果您對答案感到滿意,隨時接受/ upvote答案:) – notyou