2011-02-28 25 views
5

Estoy intentando acceder a la variable fuera de una instrucción if en java. La variable es axeMinDmg. Esto es lo que tengo pero obtengo un error. Quiero minDmg = axeMinDmg. graciasacceso variable fuera de la instrucción 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  

Respuesta

8

Deberá definir la variable fuera de la instrucción if para poder usarla fuera.

2

Sólo declaran el número entero fuera de la sentencia if:

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

hay una manera de declarar variable global para acceder a las variables con el alcance – earnest

+0

No estoy seguro de entender su pregunta. –

4

En Java, las variables se definen dentro de un ámbito. Aquí el alcance es el bloque if. por lo tanto, si lo declara fuera del bloque if, estará disponible en el alcance del método adjunto.

0

Si desea asignar una variable al exterior del bloque if-else, puede usar ternary operator que representa el operador :.

Por ejemplo, el estándar más si la expresión de Java:

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

Con operador ternario es equivalente a:

int money = shouldReceiveBonus() ? 100 : 50; 
Cuestiones relacionadas