-2

このコードを展開するにはどうすればよいですか。私はすでにすべての母音を見つけることができます。

子音、単語、スペース、および特殊文字の数も出力するには、それに追加する必要があります。

import java.lang.String;
import java.io.*;
import java.util.*;

 public class CountVowels
 {

public static void main(String args[])throws IOException
{
       BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)           );
       System.out.println("Enter the String:"                                            );
       String text = bf.readLine(                                                        );
       int count = 0;
       for (int i = 0; i < text.length(); i++) {
       char c = text.charAt(i);
       if (c=='a' || c=='e' || c=='i' || c=='o' || c=='u')
      {
       count++;
      }
      }
       System.out.println("There are" + " " + count + " " + "vowels"                      );
}
}

ここに私がこれまでに持っているコードがあります。

編集: 特殊文字を意味するときは、Shift + 1-0 を意味します。

4

2 に答える 2

1

あなたは典型的な初歩的な間違いを犯しています: main メソッドにあまりにも多くのものを入れています。

文字列を取り、母音、子音、スペース、特殊文字、単語などをカウントするメソッドを作成します。

これを行う1つの方法を次に示します。インターフェイスはオプションです。それを学習経験と考えてください。

public interface TextCounter {
    int countVowels(String s);
    // etc. - you get the idea.
}

そして今、あなたの実装:

public class TextCounterImpl implements TextCounter {
    public int countVowels(String s) {
        int numVowels = 0;
        if ((s != null) && (s.trim().length() > 0) {
            s = s.toLowerCase();
            for (int i = 0; i < s.length(); ++i) {
                char c = s.charAt(i);
                // What about the "sometimes 'y'" rule?
                if ((c == 'a') || (c == 'e') || (c == 'i') || (c == 'o') || (c == 'u')) {
                    ++numVowels;
                }
            }
        }
        return numVowels;
    }
}
于 2012-07-08T01:35:47.797 に答える
0

文字列を解析する LineParser というクラスを作成できます。get および set メソッドを使用して変数にアクセスすることを常にお勧めします。

class LineParser {

    public int numberOfVowels;
    public int numberOfConsonents;
    public int numberOfSpaces;
    public int numberOfSpecialChars;
    public int numberOfWords;
    public int numberOfDigits;

    public LineParser(String str)   {
       ProcessStr(str);
    }

    //Parses a string to count number of vowels, consonents, spaces, 
    //special characters and words,
    //Treates non letter chars as word terminators.
    //So London2Paris contains 2 words. 
    private void ProcessStr(String str) {

        boolean wordend = false;
        char[] word = new char[str.length()];
        int wordIndex = 0;

        for (char c : str.toCharArray()){           
            if (Character.isLetterOrDigit(c)){
                if (Character.isLetter(c)) {
                        word[wordIndex++] = c;
                        c = Character.toLowerCase(c);
                        if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'){
                           numberOfVowels ++;
                        }
                        else {
                           numberOfConsonents ++;
                        }
                 }
                 else {
                    numberOfDigits++;
                    wordend = true;
                 }
            } 
            else if (Character.isWhitespace(c)) {
                numberOfSpaces ++;
                wordend = true;
             } 
             else {             
                 numberOfSpecialChars ++;
                         wordend = true;
             }

             if (wordend == true && wordIndex > 0){
                 numberOfWords ++;
                 wordIndex = 0;
                 wordend = false;
             }
        }       
        wordend = true; 
        if (wordend == true && wordIndex > 0){
            numberOfWords ++;
        }
    }
}

このクラスは、このようにメイン関数から使用できます

public static void main(String args[])throws IOException
{
    BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("Enter the String:");
    String text = bf.readLine();
    LineParser parser = new LineParser(text);

    System.out.println("There are" + " " + parser.numberOfVowels + " " + "vowels");
    System.out.println("There are" + " " + parser.numberOfConsonents + " " + "Consonents");
    System.out.println("There are" + " " + parser.numberOfSpaces + " " + "Spaces");
    System.out.println("There are" + " " + parser.numberOfSpecialChars + " " + "SpecialChars");
    System.out.println("There are" + " " + parser.numberOfWords + " " + "Words");
}
于 2012-07-08T03:45:53.423 に答える