0

アルファベットからランダムに文字を生成する関数を作成しようとしています。ユーザーは母音文字の場合は「A」、子音の場合は「B」を入力する必要があります。次に、システムは配列から文字を検索して、答えが正しいかどうかを確認します。

ただし、次のエラーが発生します。

シンボルを見つけることができません

シンボル: メソッド indexOf(char)

以下のコードを確認してください。

public static void Exam_LetterType() throws Exception
{
    BufferedReader temp = new BufferedReader(new InputStreamReader(System.in));

    String Alphabet[]={"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
    String Vowel[]={"a","e","i","o","u"};
    String Consonant[]={"b","c","d","f","g","h","j","k","l","m","n","p","q","r","s","t","v","w","x","y","z"};

    Random x = new Random();

    int Index;
    String Answer;

    int CorrectAnswer = 0;

    for(int i=1;i<=20;i++)
    {
        Index = x.nextInt(26);

        System.out.println ("\n         A) VOWEL LETTER        B) CONSONANT LETTER");
        System.out.print("         Letter" + "'" + Alphabet[Index] + "'" + " is a: ");

        String Question = Alphabet[Index];  

        Answer = temp.readLine();

        if(Vowel.indexOf(Question).equals(-1))
            if(Answer.equals("B"))
            {
                CorrectAnswer = CorrectAnswer + 1;
            }
            else if(Consonant.indexOf(Question).equals(-1))
            {
                    if(Answer.equals("A"))
                    {
                        CorrectAnswer = CorrectAnswer + 1;
                    }
                    else
                    {
                        CorrectAnswer = CorrectAnswer + 0;
                    }   
            }   
    }
}

お返事をお待ちしております。ありがとう!

4

4 に答える 4

2

配列がソートされていることを確認し、Arrays.binarySearch を使用してください

于 2013-10-03T04:18:35.027 に答える
1

まず、 Array クラスindexOfにはメソッドがありません。

そしてここでも

if(Vowel.indexOf(Question).equals(-1))

整数値を比較することはできませequals==

その行は

if(// check here that weather the value **i** lesser than the length of array)
    if(Vowel[i].indexOf(Question)== -1))

これで解決です. 何度も比較しているので, 文字列が入っているかどうかをチェックする Util メソッドを書くだけarrayです.

 public boolean arrayContainsString(String[] arrayToLookUp, String str){
        boolean contains = false;
        for (String item : arrayToLookUp) {
            if (str.equalsIgnoreCase(item)) { //case or not
                contains = true;
                break; // No need to look further.
            } 
        }
        return contains;
    }

次に、単にそのメソッドを次のように使用できます

if(arrayContainsString(Vowel, Question)){
   //proceed furthur
}

補足として、Java 命名規則に従ってください。変数名は小文字で始まります。

于 2013-10-03T04:16:10.473 に答える
0

試す

if(Arrays.asList(Vowel).contains(Question))
于 2013-10-03T04:17:32.440 に答える