2

私は探していましたが、3つの方法を使用して単語数を書く方法がどこにも見つかりません。これまでのコードは次のようになります。メソッドの使用方法に迷っています。さまざまな方法を使用せずに、1 つだけを使用してこれを行うことができます。助けてください!!!

    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 に答える
1

あなたがする必要があるのは、 string 内のスペースの数を数えることです。それは、文字列内の単語の数です。

カウントが 1 ずれていることがわかりますが、よく考えてバグを探した後、その理由がわかります。

ハッピーラーニング!

于 2013-06-21T15:19:25.757 に答える
1

これは次の方法で実行できます。

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

1-n の空白文字に対してtrim()andを使用します。split()

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

への呼び出しtrim()が必要です。そうしないと、文字列の先頭にスペースがある場合、余分な「単語」が 1 つ取得されます。

このパラメーター"\\s+"は、複数のスペースを 1 つの単語区切りとしてカウントするために必要です。\s「空白」の正規表現です。+「1以上」の正規表現です。

于 2013-06-21T14:53:17.043 に答える
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 に答える
0

スペースとして引数を指定して spilt() の単純な関数を使用することをお勧めします

int n= str.split(" ").length;
于 2014-05-13T05:37:59.400 に答える
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 ループが混乱していると思います)。
  • スペース文字のチェックを修正しました ( ' 'not " ")

このコードにはバグがあり、修正方法を検討する必要があります。

  • getWordCount("How are you");3 であるべきときに 2 を返します
  • getWordCount("");0 を返します
  • getWordCount("Hello");1 であるべきときに 0 を返します

幸運を!

于 2013-06-21T15:29:02.767 に答える
0

メソッドでどのような問題が発生しているのかはわかりませんが、複数必要だとは思いません。これを試してください。分割を使用して文字列内の単語を分割し、区切り文字を選択できます

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 に答える