-1

それは単語推測ゲームであるはずで、単語を推測する前に子音を入力する 5 つのチャンスを与えます。まだ完全ではありませんが、プログラムのこの部分がうまく動作するかどうかを知る必要があります。問題を引き起こしている変数は、子音、母音、数字だと思います。これが私のコードです:ps私はJavaに非常に慣れていません

public class julia1 {

public static void main(String[] args) {

     System.out.print("enter text to guess: ");
     String w = Keyboard.readString();

     String asterix = "";

     for(int c = 0; c < w.length(); c++){
        if(w.charAt(c)==(' ')) asterix = asterix + " ";
        else asterix = asterix + "*";
        }
     System.out.println(asterix);


     for (int trys = 0; trys <=5; trys++){ 
        String temp=""; 
        System.out.print("enter a consonant: ");
        char c1 = Keyboard.readChar();
    for (int i = 0; i < w.length(); i++)
    {
        boolean character  = false, vowel = false, consonant =false,                   number= false;
        if (w.charAt(i) >= 'a' &&w.charAt(i)<='z')
        character = true;

        if (w.charAt(i) >= 'A' && w.charAt(i)<='Z')
        character = true;

        if (character == true){
            switch (w.charAt(i)){
                case 'a': case 'A': case 'o': case 'O':
                case 'e': case 'E':
                case 'i': case 'I':
                case 'u': case 'U': vowel = true; break;

        if (c1 >= '0' && c1 <='9')
            number=true;        
                default : consonant = true;

            }
        }
    }
      for(int c = 0; c < w.length(); c++){ 
          if((w.charAt(c)==c1) && (consonant == true ))
             temp = temp + c1;
             else if (vowel==true) 
                  {temp = temp + asterix.charAt(c);
                  System.out.println("this is a vowel not consonant");
                  }
                 else
                  temp = temp + asterix.charAt(c)&& number==true; 
                  System.out.println("this is not a valid letter");}

       asterix = temp; 
       System.out.println(asterix) ;
} 



  }
 }
4

4 に答える 4

6

boolean character = false, vowel = false, consonant = false, number = false;ループ内で変数を宣言しfor、このループの外でそれらを使用しようとしましたが、他のforループ内で使用しました。これがコンパイル エラーの原因です。

于 2013-01-09T19:15:50.373 に答える
4

これらの変数:

boolean character = false, vowel = false, consonant = false, number = false;

for ループ内で宣言されているため、スコープが for ループに制限されていることを意味します。次の for ループでそれらを再利用しようとすると、それらはもう存在しません。

前のループの最後での最終値を知りたい場合は、最初の for ループの前に宣言してスコープを拡大する必要があります。または、そうしないと、2 番目の for ループ内で単純に再宣言できます。

于 2013-01-09T19:15:53.147 に答える
0

1つの問題は、1つのforループ内で宣言しconsonantてから、別のforループ内で使用しようとしていることです。これは、宣言したforループの最後でスコープがconsonant終了するため許可されていません。

于 2013-01-09T19:17:23.293 に答える
0

1)

 boolean character  = false, vowel = false, consonant =false,

あなたはで終わっていますが、そうあるべきです;

2) 文字、母音、子音を for ループの外側で定義しないと、for ループのみが対象になります。

それらをクラス変数として定義する場合、false に初期化する必要はなく、デフォルト値は false です。

public class julia1 {

 boolean character, vowel , consonant ;

 public static void main(String[] args) {

3) temp = temp + asterix.charAt(c)&& number==true;行が無効です

于 2013-01-09T19:26:21.183 に答える