在java

时间:2016-03-21 19:39:06

标签: java

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

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

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

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

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

我试图在代码中获得单词的最小长度,而不计算标点符号等。我怎么做?此外,我将摆脱主要方法,因为它将自动添加。如何使程序在最后一个单词后自动添加空格?

public class WordCounts
{
public static void main(String[] args)
{
    Scanner in = new Scanner(System.in);
    System.out.print("Enter a sentence: ");              
    String sentence = in.nextLine();

    System.out.println("minLength");
    int minLength=in.nextInt();

    System.out.print("Your sentence has " + countWords(sentence,minLength)+ " words.");
}

public static int countWords(String str, int minLength)
{
int count = 0;
int c=0;

for (int i=0;i<=str.length()-1;i++)
{
    if (str.charAt(i) != ' ')
    {
        if(str.charAt(i)>='a' && str.charAt(i)<='z') //to check only      for alphabets.
        c++;

    }
    if(c>=minLength)
    {
         count++;
         c=0;
    }
    }
return count;

}
}

3 个答案:

答案 0 :(得分:0)

我想我理解你的问题陈述是正确的。如果我错了,请纠正我。

您要检查输入字符串的长度是否应大于最小输入长度。为此,您需要将minLength变量传递给方法countWords。然后使用if (str.charAt(i) == ' ' && str.charAt(i+1)!=' ')

检查字符是否有效

更新方法

public static int countWords(String str, int minLength)
{
    int count = 1;
    for (int i=0;i<=str.length()-1;i++)
    {
        if (str.charAt(i) == ' ' && str.charAt(i+1)!=' ' &&   str.length()>=minLength)
        {
            count++;
        }
    }
    return count;
 }

在您的主要方法中,使用Scanner

进行输入
int minLength=in.nextInt();

答案 1 :(得分:0)

您必须将minLength作为参数传递给countWords函数。这样,您就可以在countWords函数中访问此变量。您还需要逐个字符循环字符串,并跟踪您看到的字母数,称之为“numLetters”。检查字符串“aAbBcC .... yYzZ”中是否存在字符以确保它是一个字母,如果它存在,则将“1”添加到“numLetters”。如果到达输入的末尾或到达空格,则检查numLetters是否大于minLength,如果是,则将count添加到count。将numLetters重置为0并继续运行,直至到达字符串的末尾。

e.g。获得角色:

for (int i = 0; i < str.length(); i++){
    char c = str.charAt(i);
}

答案 2 :(得分:0)

你的功能应该是这样的:

此外,您必须将minLength的值传递给函数您无法访问main之外的minLength。

public static int countWords(String str,int minLength)
{
    int count = 0;int c=0;
    for (int i=0;i<str.length();i++)
    {
        if (str.charAt(i) != ' ')
        {
            if(str.charAt(i)>='a' && str.charAt(i)<='z')
            c++;
            continue;
        }
        if(c>=minLength)
        {
             count++;
        }
        c=0;
    }
    if(c>=minLength)
    return count+1;
    else
    return count;
 }
}