[英]error: variable might not have been initialized & if statement
所以基本上
//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
}
}
}
它說我不是在初始化變量,而是在最后的if語句中初始化它
如果沒有執行“ if”塊,會發生什么? 那么該變量將被取消分配,對嗎? 這就是為什么編譯器抱怨。
應該在所有可能的流程中分配局部變量,否則是編譯時錯誤。
您必須先初始化變量,然后才能使用它。 如果if
語句失敗,則此變量將保持未初始化狀態:
System.out.println("Primary Weapon: " + primaryWeapon);
因此,在聲明它的地方,將其等於""
:
String primaryWeapon = ""; //The gun you get
在某些情況下, PrimaryWeapon
永遠不會初始化(只要PrimaryWeapon1
不等於1
)。
使用它,它是固定的:
String primaryWeapon = "";
我認為您的問題在於if語句:假設您到達此處,而武器類型確實等於“步槍”,它將返回並退出您的函數。 您應該將primaryWeapon初始化為默認值,即primaryWeapon =“ None”;
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);
-尼魯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.