无法弄清楚我的代码有什么问题

时间:2016-11-03 03:32:07

标签: java string methods static-methods

这是我从老师那里得到的指示:

将代码写入文件WordCount.java。您的代码应该使用以下签名进入方法。您可以编写自己的主方法来测试代码。评分者将忽略您的主要方法:

public static int countWords(String original, int minLength){}

您的方法应计算句子中满足或超过minLength(以字母为单位)的单词数。例如,如果给定的最小长度为4,则您的程序应该只计算至少4个字母长的单词。

单词将由一个或多个空格分隔。可能存在非字母字符(空格,标点符号,数字等),但不应计入单词长度。

提示:编写一个方法,用于计算包含单个单词而不包含空格的字符串中的字母数(并忽略标点符号)。在countWords方法中,将输入字符串分解为单词并将每个字符串发送到您的方法。

这是我的代码:

public class WordCount {
    public static void main(String[] args)
    {
        System.out.print("Enter string: ");
        String input = IO.readString();
        System.out.print("Enter minimum length for letter: ");
        int length = IO.readInt();
        IO.outputIntAnswer(countWords(input, length));
    }
    public static int countWords(String original, int minLegth)
    {
        int count = 0;
        int letterCount = 0;
        for(int i = 0; i < original.length(); i++)
        {
            char temp = original.charAt(i);
            if(temp >= 'A' && temp <= 'Z' || temp >= 'a' && temp <= 'z')
            {
                letterCount++;
            }
            else if(temp == ' '|| i == original.length()-1)
            {
                if(letterCount >= minLegth)
                {
                    count++;
                }
                letterCount = 0;
            }
        }
        return count;
    }
}

我的大学使用自动编程器对项目进行评分,并且我不断地将其中一个测试用例弄错了。有人可以帮我弄清问题是什么吗?

1 个答案:

答案 0 :(得分:0)

我认为你的代码无法比较最后一个字符的问题。它希望在最后一个字符后面有一个空格,以便它可以比较最后一个字符,因为java不使用空字符终止符进行字符串终止。我有使用Scanner类模拟相同的代码,因为我在使用io时遇到了一些麻烦。所以我做了以下更改:

         Scanner sc1,sc2;
        sc1=new Scanner(System.in);
         String input = sc1.nextLine()+" ";

我不知道是否可以这样做:

String input = IO.readString()+" ";

但我认为你应该尝试在字符串末尾附加空格“”