0

このプログラムをうまく動かせません。どなたかこのプログラムを見て、どうすればよいか教えていただけませんか? ありがとう!

ユーザーから文字列を読み取り、文字列全体に含まれる小文字の母音 (a、e、i、o、および u) の数を判断して出力するアプリケーションを設計および実装します。母音ごとに個別のカウンターを用意します。また、非母音文字の数を数えて出力します。

プロンプト、ラベル、および出力の仕様: コードではプロンプト「enter string :」を使用する必要があります。入力が読み取られると、6 行の出力があり、それぞれが異なるラベルで始まります: "a: "、"e: "、"i: "、"o: "、"u: "、"other: " inその注文。各ラベルの後に必要な数があります。

たとえば、「aardvark heebie jeebies」が読み込まれた場合、出力は次のようになります。

a: 3
e: 6
i: 2
o: 0
u: 0
other: 12

    import java.util.Scanner;
    public class VowelAnalyst{


    public static void main(String args []){

    int a =0, e = 0, x = 0;
    int u = 0, o = 0, other = 0;
    String text;
    Scanner scan = new Scanner(System.in);


    System.out.print("enter string: ");
    text = scan.nextLine();

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

    if (c=='a')
    a++; 

    else if( c=='e')
    e++;

    else if(c=='i')
    x++;

    else if(c=='o')
    o++;

    else if (c=='u')
    u++;        

    else
    other++;
    }

    System.out.println("a: " + a + "\n" +
    "e: " + e + "\n" +
    "i: " + x + "\n" +
    "o: " + o + "\n" +
    "u: " + u + "\n" +
    "other: " + other);

    }
    }
4

3 に答える 3

3

一連のifステートメントが無効です。意味のある表現は次のようになります

if (c == 'a') a++;
else if (c == 'e') e++;
...
else other ++;

ただし、次のように switch ステートメントを使用することをお勧めします。

switch (c) {
    case 'a': 
        a++; 
        break;
    case 'e': 
        e++;
        break;
    case 'o': 
        o++;
        break;
    case 'u': 
        u++;
        break;
    default: 
        other++;
        break;
}

それを修正した後、何が欠けているかを調べる必要があります。現在、大文字の母音はすべて としてカウントされていotherます。条件を2倍にすることができます

if (c == 'a' || c == 'A')
...

また

case 'A':
case 'a':
...

しかし、もっと簡単な方法があります。比較の前に文字列を小文字に変換します。

for (int i = 0; i < text.length(); i++) {
    char c = Character.toLowerCase(text.charAt(i));
    switch (c) {
    ...
于 2013-05-06T15:29:49.290 に答える
2

文字ごとに行います

switch (c)
{
    case 'a':
    case 'A':
        a++;
        break;
    case 'e':
    case 'E':
        e++;
        break;
    case 'i':
    case 'I':
        i++;
        break;
    case 'o':
    case 'O':
        o++;
        break;
    case 'u':
    case 'U':
        u++;
        break;
    default:
        other++;
        break;
}

すべての母音と子音を単純に数えます。

于 2013-05-06T15:29:51.637 に答える