if语句之外的变量访问

问题描述:

我想访问java中if语句之外的变量。该变量是axeMinDmg。这是我的,但得到一个错误。我想minDmg = axeMinDmg。谢谢if语句之外的变量访问

@SuppressWarnings("unused") 
    public static void main(String[] args) 
     throws IOException 
     { 


      int count = 1; 

    // start both with 1 point 
    int goodTotal = 50; 
    int monTotal = 50; 

    // set amount of money that Goodman has 
    int moneyAmt = 10; 




    // setting array for bat 

    int [] bat = {2, 4, 3}; 
    int batMinDmg = bat[0]; 
    int batMaxDmg = bat[1]; 
    int batCost = bat[2]; 

    //setting array for axe 
    int [] axe = {4, 6, 6}; 
    int axeMinDmg = axe[0]; 
    int axeMaxDmg = axe[1]; 
    int axeCost = axe[2]; 

    //setting array for sword 

    int [] sword = {6, 8, 10}; 
    int swordMinDmg = sword[0]; 
    int swordMaxDmg = sword[1]; 
    int swordCost = sword[2]; 



    // ask if Goodman would like to purchase a weapon 
    System.out.println("Would you live to purchase a weapon (YES OR NO): "); 
    Scanner sc = new Scanner(System.in); 
    String name = sc.next(); 


    if (name.equals("yes")){ 
     System.out.println("Select Your Weapon \n axe \n bat \n sword : \n "); 

     Scanner wc = new Scanner(System.in); 
     String weapon = wc.next(); 
     int minDmg = axeMinDmg; 

    if(weapon.equals("axe")){ 
    int minDmg = axeMinDmg; 
    } else { 
     System.out.println(); 
} // close if statement  

您需要定义if语句之外的变量才能在外部使用它。

只是声明整数if语句外:

int minDmg; 
if(weapon.equals("axe")){ 
    minDmg = axeMinDmg; 
} else { 
    System.out.println(); 
System.out.println("Can access variable: " + minDmg); 
+0

是有声明全局变量与范围来访问变量的方式 – earnest 2011-02-28 19:29:09

+0

我不确定我了解你的问题。 – 2011-02-28 19:39:09

在Java中,变量的范围内,定义。这里的范围是if块。所以如果你在if块之外声明它,它将在封闭方法范围中可用。

如果要将变量分配给if-else块之外,可以使用运算符代表的ternary operator

例如,标准的if-else Java表达式:

int money; 
if (shouldReceiveBonus()) { 
    price = 100; 
} 
else { 
    price = 50; 
} 

随着三元操作等效于:

int money = shouldReceiveBonus() ? 100 : 50;