2016-12-11 1 views
-5

Hey, je ne comprends pas pourquoi, lorsque cela s'exécute le calcul est égal à zéro. J'ai déjà affecté des valeurs aux variables de la méthode principale. Qu'est-ce qu'il me manque parce que je me casse la tête en essayant de comprendre. Aussi, je suis à partir d'un exemple très simple que j'ai vu en ligne qui a fonctionné, je l'ai édité juste à mes besoins. Je suis relativement nouveau alors portez-moi, c'est mon deuxième mois et je veux continuer à faire ça.Impossible d'obtenir les valeurs de retour à partir de méthodes (java)

public void myAtkStat(int myAtk) { 
    System.out.println("Atk:" + myAtk); 
    int meAtk = myAtk; 
} 

public int getmyAtk() { 
    return meAtk; 
} 

public void defStat(int def) { 
    System.out.println("Def :" + def); 
    int defense = def; 
} 

public int getDefense() { 
    return defense; 
} 

public void doCalculation() { 
    System.out.println((getmyAtk() * 2) - getDefense()); 
} 
+2

Vous avez vraiment besoin de revenir à votre livre et en apprendre davantage sur la portée des variables. Votre code a très peu de sens. Cela ne devrait même pas compiler. Votre méthode 'getDefense' ne contient pas de variable appelée' defense', donc vous ne pouvez pas la renvoyer. – Carcigenicate

+0

Pour développer, les variables avec le même nom ne sont * pas * partagées entre les méthodes. Faites de 'defence' un membre d'une classe pour le partager. – Carcigenicate

+0

J'ai oublié d'ajouter que la variable int défense et atk sont déjà déclarées dans la classe donc mes excuses pour ne pas être complètement claires. Merci pour l'aide. –

Répondre

0

Lorsque vous définissez la valeur d'attaque, vous utilisez une variable de méthode. Donc, vous ne définissez jamais la valeur. Vous devez écrire cela comme de la manière suivante:

public void myAtkStat (int myAtk) { 
    System.out.println("Atk:" + myAtk); 
    this.meAtk=myAtk; 
} 

Vous avez le même problème pour la défense variable (comme on dit dans les commentaires)

0
int defense = def; 

Parce que vous avez inclus un type (int), vous créé une nouvelle variable locale. Lorsque vous l'affectez, vous affectez la nouvelle variable locale et non le membre de la classe.

Inclure un type pour créer une nouvelle variable. Supprimez-le dans ce cas pour faire référence au membre de la classe.

Ou, mieux encore, être explicite sur quelle variable que vous voulez:

this.defense = def;