Использование переменных, объявленных внутри инструкции IF

#java

#java

Вопрос:

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

         if (opt == 1) {
            System.out.println("Enter your name:");
            name1 = keyboard.next();
            name2 = keyboard.next();
            System.out.println("Enter your ID:");
            ID = keyboard.nextInt();
            System.out.println("Enter semesters taken:");
            semtaken = keyboard.nextInt();
            int[] semcode = new int[semtaken];
            int[] subjectTaken = new int[semtaken];
            double[] GPA = new double[semtaken];
            double finalGPA;
            for (i = 0; i < semtaken; i  ) {
                System.out.println("Enter semester code for semester no "   (i   1));
                semcode[i] = keyboard.nextInt();
                System.out.println("Enter subjects taken:");
                subjectTaken[i] = keyboard.nextInt();
                String[][] subject = new String[subjectTaken[i]][4];
                int subjectsTakenNO = subjectTaken[i];

                System.out.println("Enter your subject code, hours, letter");
                for (j = 0; j < subjectTaken.length; j  ) {
                    for (int k = 0; k < 3; k  ) {
                        subject[j][k] = keyboard.next();
                    }

                }

                GPA[i] = getGPA(subject, subjectsTakenNO);
                totalGPA  = GPA[i];
                finalGPA = totalGPA / semtaken;
                System.out.println("Your GPA for this term is"   getGPA(subject, subjectsTakenNO));
            }
            opt1 = true;
        } /* Here is the PROBLEM. I want to get I want to get semtaken and gpa but it shows an
             error (Variable not found) */ 
        else if (opt == 2 amp;amp; opt1) {
            summary(name1, name2, ID, GPA, totalGPA, semtaken, semcode);
  

Итак, в принципе, я хочу использовать totalGPA, semtaken, semcode и GPA, которые находятся внутри IF. Как я могу использовать их, не показывая мне ошибку «Переменная не найдена»? Я не могу инициализировать массив перед IF, потому что я не знаю его размер. Пользователь вводит размер, поэтому он должен быть внутри IF.

Комментарии:

1. Я попробовал приведенные ниже решения, я ценю помощь, НО значения в конце отображаются как ноль. Я хочу получить значения, которые были присвоены инструкцией «IF».

Ответ №1:

Вы не можете выделить его, но вы можете ввести его.

 int[] list = null;
if (...) {
    list = new int[10];
}
Do what so ever with list.
  

Комментарии:

1. это вызовет «не инициализировано» при использовании вне if

Ответ №2:

Вы можете определить это вне if:

 GPA[] array = null; //or new GPA[0];

if (...) {
   array = new GPA[x];
}
  

Комментарии:

1. Да, но значения были бы равны НУЛЮ.

2. Да .. но если вы назначите что-нибудь, что они выиграли

Ответ №3:

Просто объявите (но не инициализируйте) нужные вам переменные вне if перед if . Например

 int semtaken;
if (opt == 1) {
    ...
    semtaken = ...;
    ...
}
foo(semtaken);