retour d'une valeur à partir d'une méthode à une autre méthode
Quelqu'un peut-il me dire pourquoi la valeur retournée est 3 et pas 8. Ne pas le return x
déclaration de l' addFive
changement de méthode de la valeur de x
dans le main
méthode?
public class App {
public static void main(String[] args) {
int x=3;
addFive(x);
System.out.println("x = " + x);
}
private static int addFive(int x) {
x += 5;
return x;
}
}
Vous devriez voir cette question: stackoverflow.com/questions/40480/...
Je pense que vous devriez vraiment accepter une réponse de ceux qui sont énumérés ci-dessous, de toute façon je suggère de lire Arkanon question et avoir la pleine connaissance de java toujours-passer-par-valeur de la chose
Je pense que vous devriez vraiment accepter une réponse de ceux qui sont énumérés ci-dessous, de toute façon je suggère de lire Arkanon question et avoir la pleine connaissance de java toujours-passer-par-valeur de la chose
OriginalL'auteur flutter | 2015-03-19
Vous devez vous connecter pour publier un commentaire.
Vous voulez
x=addFive(x);
plutôt que de simplementaddFive(x)
. L'appel deaddFive(x)
sur son propre ne s'applique pas la valeur retournée pour n'importe quelle variable.OriginalL'auteur Jaken Herman
Vous devez définir la valeur d'une variable, sinon il est perdu et vous êtes à la récupération de la valeur de "x" dans votre méthode principale. Plutôt que de capturer la valeur de retour.
Si vous voulez voir la valeur de retour et de ne pas le conserver, vous pouvez même mettre de l'appel de fonction à l'intérieur de la
System.out.println
.OriginalL'auteur Evan Bechtol
Comme tout le monde le dit, vous devez affecter votre valeur de retour. Parce que vous êtes en train de faire "addFive(x)" au lieu de "x=addFive(x);" vous êtes juste l'impression de l'instance de "x" dans la principale, et ne jamais obtenir la valeur de votre fonction retourne.
C'est parce que "x" dans votre principale fonction est une variable d'instance, et le "x" dans addFive() est une variable locale. Ce ne sont pas les mêmes variables, même si elles ont le même nom.
Cela pourrait éclaircir un peu - http://www.tutorialspoint.com/java/java_variable_types.htm
OriginalL'auteur adamclmns
lorsque vous appelez une méthode en java et vous ne donnez pas pour n'importe quelle variable, les changements vont se produire dans l'appel de la méthode, après que cette valeur sera perdu et revenir à la valeur que vous attribuez. pour voir les résultats, vous devez le faire
System.out.println(addFive(x));
mais si vous voulez changer la valeur dex
vous devez attribuerx = addFive(x);
OriginalL'auteur Rafael Reis
Vous appelez la méthode
addFive(int x)
avecx
, mais pas de l'affectation de la valeur retournée pour quoi que ce soit. Ainsi, à l'intérieurmain()
champ d'application dex
reste comme avant, 3 - qui est ce qui est imprimé. Ainsi, vous pouvez stocker la valeur de retour dex
lui-même:ou de faire l'appel de fonction dans un délai d'impression de déclaration:
OriginalL'auteur Sidmeister
La méthode retourne une valeur, mais vous devez définir la valeur d'une variable aussi, quand vous le retourner, sinon comment serait-il savoir quelles sont les variables que vous souhaitez retourner la valeur? Vous pouvez avoir 10 variable, et si vous appelez la méthode, comment savoir quelles sont les variables à retourner le nombre d'? C'est pourquoi vous devez définir le numéro de retour à une variable comme ceci:
OriginalL'auteur Ski
Parce que vous êtes tout simplement pas en utilisant le calcul de votre fonction. Il ne modifie pas la valeur de x, il renvoie la nouvelle valeur.
Vous devriez faire quelque chose comme:
OriginalL'auteur slnowak
La valeur dans la fonction principale est complètement différente de la valeur dans le
addFive(int x )
fonction. Vous envoyez unx
de main pouraddFive(int x)
méthode.JVM fait une copie de x et de l'envoyer à
addFive(int x)
méthode. Puisx
changements dans laaddFive(int x)
méthode. Mais lex
dansmain()
méthode reste inchangée.Si vous voulez obtenir le changement de la valeur retournée par
addFive(int x)
de la méthode main, vous pouvez effectuer les opérations suivantes -Espère que ça va aider.
Merci beaucoup.
OriginalL'auteur Mehmood Arbaz