0

我的目标是创建一个接受字符串的代码,以及每个单词允许的最小字符数。输出将是一个 int,它告诉用户他们句子中大于或等于他们输入的最小值的单词数。

现在,我的方法是在 main 方法中将句子分解为单个单词,然后将每个单词发送到另一个计算字符数的方法中。

我的主要方法有困难,特别是将句子分成单个单词。我想在不使用数组的情况下实现这一点,只使用循环、子字符串和 indexOf 等。我评论了我遇到问题的代码部分。我使用只有一个单词的字符串测试了我的其余代码,并且我的 letterCounter 方法似乎工作正常。我知道答案可能很简单,但我仍然无法弄清楚。

任何帮助都会很棒!谢谢!

这是我的代码:

public class Counter
{
public static void main(String [] args)
{
    int finalcount = 0;

    System.out.print("Enter your string: ");
    String userSentence = IO.readString();


    System.out.print("Enter the minimum word length: ");
    int min = IO.readInt();

    //Error checking for a min less than 1

    while(min < 0)
    {
        IO.reportBadInput();
        System.out.print("Enter the minimum word length: ");
        min = IO.readInt();
    }


    int length = userSentence.length(); // this will get the length of the string



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

             /* I dont know what to put here to split the words!

                  once I split the userSentence and store the split word into
                  a variable called word, i would continue with this code: */

            if((letterCounter(word)) >= min)
                finalcount++;

            else
                finalcount = finalcount;

           }
    }       




    IO.outputIntAnswer(finalcount);

}

//this method counts the number of letters in each word

    public static int letterCounter (String n)
        int length = n.length(); 
        int lettercount= 0;


     for(int i = 0; i < length; i ++)

    {
        boolean isLetter = Character.isLetter(n.charAt(i));

         if (isLetter) 
         {
            if ((n.length()) >= length) 
            {
                lettercount++;
            }
         }

    }

    return lettercount;
 }

}

4

2 回答 2

1

看看String.split()

于 2013-10-29T15:38:21.457 回答
0

您可以像这样使用 string.split() 来完成此操作:

String [] splittedString  = inputString.split(" ");

for(int i = 0;i< splittedString.length; i++){
    String currentWord = splittedString[i];

    if(currentWord.length() >= min){
        finalcount++;
    }
}
于 2013-10-29T15:48:28.907 回答