2

我一直在寻找,但在任何地方都找不到如何使用 3 种方法编写字数。这是到目前为止的代码。我不知道如何使用这些方法。我可以做到这一点,而无需使用不同的方法,只使用一种。请帮忙!!!

    public static void main(String[] args) {
    Scanner in = new Scanner (System.in);
    System.out.print("Enter a string: ");
    String s = in.nextLine();
    if (s.length() > 0)
    {
        getInputString(s);
    }
    else 
    {
        System.out.println("ERROR - string must not be empty.");
        System.out.print("Enter a string: ");
        s = in.nextLine();
    }
    // Fill in the body with your code
}

// Given a Scanner, prompt the user for a String.  If the user enters an empty
// String, report an error message and ask for a non-empty String.  Return the
// String to the calling program.
private static String getInputString(String s) {
    int count = getWordCount();
    while (int i = 0; i < s.length(); i++)
    {
        if (s.charAt(i) == " ")
        {
            count ++;
        }
    }
    getWordCount(count);
    // Fill in the body

    // NOTE: Do not declare a Scanner in the body of this method.
}


// Given a String return the number of words in the String.  A word is a sequence of 
// characters with no spaces.  Write this method so that the function call:
//      int count = getWordCount("The quick brown fox jumped");
// results in count having a value of 5.  You will call this method from the main method.
// For this assignment you may assume that
// words will be separated by exactly one space.
private static int getWordCount(String input) {
    // Fill in the body
}

}

编辑:我已将代码更改为

private static String getInputString(String s) {
    String words = getWordCount(s);
    return words.length();
}


private static int getWordCount(String s) {
    return s.split(" ");
}

但我无法将字符串转换为整数。

4

10 回答 10

3

您已经阅读了方法的名称,并查看了注释以决定在方法内部应该实现什么,以及它应该返回的值。

getInputString方法签名应该是:

private static String getInputString(Scanner s) {

    String inputString = "";

    // read the input string from system in
    // ....

    return inputString;

}

getWordCount方法签名应该是:

private static int getWordCount(String input) {

    int wordCount = 0;

    // count the number of words in the input String
    // ...

    return wordCount;
}

main方法应如下所示:

public static void main(String[] args) {

    // instantiate the Scanner variable

    // call the getInputString method to ... you guessed it ... get the input string

    // call the getWordCount method to get the word count

    // Display the word count
}
于 2013-06-21T15:10:59.000 回答
2
                 count=1 //last word must be counted
                 for(int i=0;i<s.length();i++)
                 {
                   ch=s.charAt(i);
                   if(ch==' ')
                   {
                     count++;
                   }
                 }              
于 2014-07-31T11:10:40.670 回答
1

您可以通过以下方式执行此操作:

private static int getWordCount(String input) {
    return input.split("\\s+").length;
}
于 2013-06-21T14:59:06.337 回答
1

在 1-n 空白字符上使用trim()和:split()

private static int getWordCount(String s) {
    return s.trim().split("\\s+").length;
}

调用 totrim()是必要的,否则如果字符串中有前导空格,您将获得一个额外的“单词”。

该参数"\\s+"对于将多个空格计为单个单词分隔符是必需的。\s是“空白”的正则表达式。+是“1 个或多个”的正则表达式。

于 2013-06-21T14:53:17.043 回答
1

您需要做的是,计算字符串中的空格数。那是字符串中的单词数。

你会看到你的计数会减少 1,但经过一些思考和寻找错误后,你会找出原因。

快乐学习!

于 2013-06-21T15:19:25.757 回答
0

根据您的代码,我认为这是您正在尝试做的事情:

private static int getWordCount(String input) {

    int count = 0;

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

    return count;
}

这是我所做的:

  • 我已将您正在“玩”的代码移到正确的方法 ( getWordCount) 中。
  • 更正了您尝试使用的循环(我认为您对 for 和 while 循环感到困惑)
  • 修复了对空格字符的检查(' '不是" "

此代码中有一个错误,您需要弄清楚如何修复:

  • getWordCount("How are you");当它应该是 3 时会返回 2
  • getWordCount("");将返回 0
  • getWordCount("Hello");当它应该是 1 时将返回 0

祝你好运!

于 2013-06-21T15:29:02.767 回答
0

更好地使用带有参数的简单函数 spilt() 作为空格

int n= str.split(" ").length;
于 2014-05-13T05:37:59.400 回答
0

我不确定您在使用方法时遇到什么麻烦,但我认为您不需要多个方法,试试这个:它使用 split 来拆分字符串中的单词,您可以选择分隔符

String sentence = "This is a sentence.";  
String[] words = sentence.split(" ");  

for (String word : words) {  
   System.out.println(word);  
}

那么你可以这样做:

numberOfWords = words.length();

如果您想使用 3 种方法,您可以从您的main()方法中调用一个为您执行此操作的方法,例如:

public String getInputString() {

    Scanner in = new Scanner (System.in);
    System.out.print("Enter a string: ");
    String s = in.nextLine();
    if (s.length() > 0) {
        return s;
    } else {
        System.out.println("ERROR - string must not be empty.");
        System.out.print("Enter a string: ");
        return getInputString();
    }
}

public int wordCount(String s) {

    words = splitString(s)

    return words.length();
}

public String[] splitString(String s) {

    return s.split(" ");
}
于 2013-06-21T14:51:09.267 回答
0

使用String.split()方法如:

String[] words = s.split("\\s+");
int wordCount = words.length;
于 2013-06-21T14:52:09.707 回答
0
public static int Repeat_Words(String arg1,String arg2)
{
    //It find number of words can be formed from a given string

    if(arg1.length() < 1 || arg2.length() < 1)
        return 0;

    int no_words = 99999;
    char[] str1 = arg1.toCharArray();
    char[] str2 = arg2.toCharArray();


    for(int x = 0; x < str1.length; x++)
    {
        int temp = 0;
        for(int y = 0; y < str2.length; y++)
        {
            if(str1[x] == str2[y])
            temp++;
        }
        if(temp == 0)
            return 0;
        if(no_words > temp)
            no_words = temp;

        temp = 0;
    }

    return no_words;
}
于 2016-12-23T18:02:29.707 回答