Новое в программировании в целом (JAVA). Как я должен исправить эти ошибки? Правильно ли упорядочена вложенная структура if-else? - PullRequest
0 голосов
/ 30 сентября 2019

Я работаю над программой, использующей Java, и получаю ошибки. Целью программы является кодирование цикла while с вложенной структурой if-else внутри структуры if-else.

  1. В строке 33 есть ошибка, в которой говорится, что «переменная age не могла быть инициализирована», даже если она объявлена ​​в main ()?
  2. Правильно ли я вложил структуры if-else внутри while?
  3. Правильно ли установлены фигурные скобки?

    import java.util.Scanner;
    public class RamosSLE32 { //Begin class
    
    public static void main(String[] args) { //Begin main()
    
        Scanner input = new Scanner(System.in);
        int age;
        String correctPassword = "MonthyPython";
        char tryAgain = 'Y';
        char tryAgain2 = 'Y';
        String q1 = "%nWhat is the password?";
        String q2 = "%nEnter your age: ";
    
        while (Character.toUpperCase(tryAgain) == 'Y') {
            System.out.printf(q1);
            String password = input.nextLine();
            if (!password.equals(correctPassword)) {
                System.out.printf("%nInvalid password!%nDo you want to try again? Y or N.");
                tryAgain = input.nextLine().charAt(0);
            } else {
                if (password.equals(correctPassword)) {
                    System.out.printf(q2);
                    age = input.nextInt();
                }
                {
                    if (age > 17) {
                        System.out.printf("%nShangri-La welcomes you to your earthly paradise!%nThank you! Have a nice day!");
                    } else {
                        if (age <= 17) {
                            System.out.printf("%nSorry, NO underaged patrons allowed!%nDo you want to try again? Y or N.");
                            tryAgain2 = input.nextLine().charAt(0);
                        }
                    }
                }
            }
        }
      } //End main()
    } //End class
    

1 Ответ

0 голосов
/ 30 сентября 2019

Вы получаете variable age might not have been initialized, потому что age является локальной переменной, а локальные переменные не получают значений по умолчанию.
Их начальные значения не определены без назначения значений каким-либо образом. Прежде чем вы сможете использовать локальные переменные, они должны быть инициализированы.
Для получения более подробной информации, пожалуйста, обратитесь: default-values-and-initialization-in-java

...