У меня ошибка: не могу найти символ, но я думаю, что мои переменные все объявлены и инициализированы

предполагается, что это игра с угадыванием слов, дающая 5 шансов войти в согласный, прежде чем догадаться, что слово все еще не завершено, но я должен знать, хорошо ли работает эта часть программы. Я думаю, что переменные, которые приносят мне проблемы, являются согласными, гласный, число. Вот мой код: ps im очень новый для 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) ;
} 



  }
 }
1
nl ja de
@JuliaCaruana Пожалуйста, отредактируйте свой вопрос. Почти невозможно прочитать код в комментариях.
добавлено автор Code-Apprentice, источник
Какая строка является ошибкой?
добавлено автор RNJ, источник
Измените ошибку в основной части вопроса, после кода.
добавлено автор Makoto, источник
На какой строке вы получаете эту ошибку? Отправьте сообщение об ошибке компилятора.
добавлено автор Rohit Jain, источник
Одно предложение. Пожалуйста, правильно отформатируйте свой код. Многие такие ошибки компилятора легко решаются с помощью правильного форматирования.
добавлено автор Rohit Jain, источник
Строка boolean character = false, vowel = false, consonant = false, number = false; необходимо перемещать за пределы цикла for в строке 21. Это позволит решить некоторые проблемы, но есть еще одна проблема с temp = temp + asterix.charAt (c) && number == true; в этом недопустимом коде.
добавлено автор GaryMcM, источник
if ((w.charAt (c) == c1) && (consonant == true)) ^ символ: переменная согласная местоположение: класс julia1 E: \ julia1 \ src \ julia1.java: 47: ошибка: не может найти символ else if (гласный == true) ^ symbol: variable vowel location: class julia1 E: \ julia1 \ src \ julia1.java: 52: ошибка: не удается найти символ temp = temp + asterix.charAt (c) && number == true; ^ символ: переменная число местоположение: класс julia1 3 ошибки
добавлено автор Julia Caruana, источник

4 ответы

Вы указали переменные boolean character = false, vowel = false, consonant = false, number = false; внутри цикла для и попытайтесь использовать их вне этого цикла, внутри других для цикла . Это является причиной ошибки компиляции.

6
добавлено
@JuliaCaruana, не пытайтесь «что-то еще». Просто поместите эту строку кода boolean character = false, vowel = false, consonant = false, number = false; до строка for (int i = 0 ; i
добавлено автор Andremoniy, источник
Постскриптум к сожалению, это не последняя ошибка в вашем коде, но это решит эту первую проблему ...
добавлено автор Andremoniy, источник
хорошо tnx очень много. я попробую что-то еще ...
добавлено автор Julia Caruana, источник

Эти переменные:

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

объявляются в цикле for, что подразумевает, что их область действия ограничена для цикла. Когда вы пытаетесь повторно использовать их в следующем цикле for, они больше не существуют.

Либо вы хотите знать, каково их окончательное значение в конце предыдущего цикла, и в этом случае вам нужно увеличить свою область действия, объявив перед первым циклом for. Или вы этого не сделаете, и вы можете просто обновить их во втором цикле.

4
добавлено

Одна из проблем заключается в том, что вы объявили consonant внутри одного цикла, а затем попытаетесь использовать его внутри другого. Это недопустимо, так как объем consonant заканчивается в конце цикла for, где вы его объявляете.

0
добавлено

1)

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

Вы закончили, но это должно быть;

2) Определите свой персонаж, гласный, согласный вне цикла for, иначе он будет иметь значение только для цикла.

Если вы определяете их как переменные класса, вам не нужно инициализировать значение false, а значение по умолчанию - false.

public class julia1 {

 boolean character, vowel , consonant ;

 public static void main(String[] args) {

3) temp = temp + asterix.charAt(c)&& number==true; line is invalid

0
добавлено
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async