Вопрос по java, variables, class, project, initialization – ошибка: переменная не могла быть инициализирована и оператор if

0

Так что в основном

 //Black ops 2 Class generator Please help me FIX!!!!!!
    import java.util.Scanner;
    import java.util.Random;
    public class money
        {
        public static void main(String[]args)
            {
        String primaryOption;
        Scanner scan = new Scanner (System.in);
        Random primaryGen = new Random();

        String weaponType; //Rifle, SMG, HMG, Sniper, shotgun, or special
        String primaryoption; //Do you want a primary?
        String primaryWeapon; //The gun you get
        int primaryWeapon1; 
        String primrayCamo; //Camo for primary
        String MTAR = "MTAR", Type25 = "Type 25", SWAT556 = "SWAT-556", FALOSW = "FAL-OSW", M27 = "M27", SCARH = "SCAR-H", SMR = "SMR", M8A1 = "M8A1", AN94 = "AN-94";

        String secondaryOption; //Do you want a secondary?
        String secondaryWeapon; //Your gun
        int secondaryWeapon1;
        String secondaryCamo; //Camo for secondary
        System.out.println("Would you like a Primary Weapon? Yes(1) or No(2)");
        primaryOption = scan.nextLine();
            if (primaryOption.equals("Yes")) {
                System.out.println("Would you like a Rifle, SMG, HMG, Sniper, Shotgun, or Special?)");
                weaponType = scan.nextLine();
                    if (weaponType.equals("Rifle")) {
                        primaryWeapon1 = primaryGen.nextInt(1) +1;
                        if (primaryWeapon1 == 1) {
                            primaryWeapon = MTAR; //*&%&*This is where i initialized it.
    }
                return; 

                            }
    System.out.println("Primary Weapon: " + primaryWeapon); //This is where the error is. It say's im not initializing the variable but I initialize it in the last if statement
    }
    }
    }
String primaryWeapon = "Unarmed"; jxh

Ваш Ответ

4   ответа
0

Если вы доберетесь до этого места, а WeaponeType будет равным "винтовка», он вернется и выйдет из вашей функции. Вы должны инициализировать ваш primaryWeapon значением по умолчанию, то есть primaryWeapon = "Никто";

 if (weaponType.equals("Rifle")) {
                        primaryWeapon1 = primaryGen.nextInt(1) +1;
                        if (primaryWeapon1 == 1) {
                            primaryWeapon = MTAR; //*&%&*This is where i initialized it.
                        }
                        return; //<---- remove this
 }

Также заполните блок if,if(yes) {...} else {...}.Компилятор java разветвляет условные предложения и предупреждает / выдает ошибку при попытке использовать неинициализированные переменные. Например:

int b;
boolean f = true;
if(f)
    b =1;
System.out.println(b); //error because no else block


//Fixed
int b; 
boolean f = true;
if(f)
b = 1;
else
b= 2;
System.out.println(b);

--Niru

1

Вы должны инициализировать переменную перед ее использованием. Еслиif оператор не выполняется, эта переменная останется неинициализированной:

 System.out.println("Primary Weapon: " + primaryWeapon); 

Итак, где вы это объявляете, равняйте это:""

String primaryWeapon = ""; //The gun you get
1

но я инициализирую ее в последнем операторе if

Что будет, если чтоесли" блок не выполнен? Тогда эта переменная будет не назначена правильно? Вот почему компилятор жалуется.

Локальная переменная должна быть назначена во всех возможных потоках, иначе это ошибка времени компиляции.

0

PrimaryWeapon никогда не инициализируетсяPrimaryWeapon1 не равно1).

Используйте это, и это 'исправлено:

String primaryWeapon = "";

Похожие вопросы