我试图编写一个方法,返回“words”参数中至少包含min“但不超过”max c“字符的单词数。
public static int countWords(String words, int min, int max)
{
Scanner s = new Scanner (words);
int counter = 0;
while (s.hasNext())
{
String word = s.next();
int wordLength = word.length();
if (wordLength>min && wordLength<max)
{
counter= counter + 1;
s.close();
}
}
return counter;
}
答案 0 :(得分:1)
只是一个小小的变化。您正在关闭while循环中的扫描仪,将其移出循环并运行。
public static int countWords(String words, int min, int max) {
Scanner s = new Scanner(words);
int counter = 0;
while (s.hasNext()) {
String word = s.next();
int wordLength = word.length();
if (wordLength > min && wordLength < max) {
counter = counter + 1;
}
}
s.close();
return counter;
}
我还建议你改变if条件,使其包含min和max。 if(wordLength&gt; = min&amp;&amp; wordLength =&lt; max){ 例如countWords(&#34;计算此行中的单词1 22 333 4444 55555&#34; 3,4)对于当前条件的任何字符串都不会返回任何结果。
答案 1 :(得分:1)
之前在
中已经讨论过在使用Strings时使用split与scanner的偏好我更喜欢正则表达式,所以这里是使用String的split方法的解决方案,如下所示:
public class Sample {
public static int countWords(String words, int min, int max) {
String[] allWords = words.split("(?s)\\s+");
int counter = 0;
for (String word : allWords) {
if(word.length() >= min && word.length() <= max)
counter++;
}
return counter;
}
public static void main(String[] args) {
String s = "find all the long words in this sentence";
System.out.println(countWords(s,4,7));
}
}
如果您想使用Scanner,可以这样做:
public class Sample {
public static int countWords(String words, int min, int max) {
Scanner scan = new Scanner(words);
int counter = 0;
int length = 0;
while(scan.hasNext()){
length = scan.next().length();
if(length >= min && length <= max)
counter++;
}
scan.close();
return counter;
}
public static void main(String[] args) {
String s = "find all the long words in this sentence";
System.out.println(countWords(s,4,7));
}
}
答案 2 :(得分:0)
根据我可以理解的内容,您希望计算指定了max和min
的单词例如,
"The rain in Spain falls mainly in the plain", 3, 5
返回5
,因为它们是3个5和2个三分之一
你的代码非常好,除了这部分需要对其逻辑进行一些改变
if (wordLength>min && wordLength<max)
根据我从您的问题中理解的内容,您需要具有最小长度或最大长度的单词
结果你必须将if语句改为
if (wordLength == min || wordLength == max) {
解释:单词的长度等于最小长度或最大长度,计数器将被添加