这是我从老师那里得到的指示:
将代码写入文件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;
}
}
我的大学使用自动编程器对项目进行评分,并且我不断地将其中一个测试用例弄错了。有人可以帮我弄清问题是什么吗?
答案 0 :(得分:0)
我认为你的代码无法比较最后一个字符的问题。它希望在最后一个字符后面有一个空格,以便它可以比较最后一个字符,因为java不使用空字符终止符进行字符串终止。我有使用Scanner类模拟相同的代码,因为我在使用io时遇到了一些麻烦。所以我做了以下更改:
Scanner sc1,sc2;
sc1=new Scanner(System.in);
String input = sc1.nextLine()+" ";
我不知道是否可以这样做:
String input = IO.readString()+" ";
但我认为你应该尝试在字符串末尾附加空格“”