2014-05-07 3 views
2

Je suis en train de résoudre ce problème « d'incrémentation » dans un code Java, mais je ne peux pas me surprends arriver à une solution:De retour Nombres incrémentée en Java

public class Return { 
    public static void main(String[] args) { 
    int n = returnn(3); 
    System.out.println(n); 
    } 

    public static int returnn(int n) { 
    return n++; 
    } 
} 

Je suis censé revenir 4 mais il est retourner 3 à la place. Pourquoi donc? En outre, quand je tape: return n+=1 cela fonctionne. Cela me déroute. Aussi, quelle est la différence entre n++ et ++n? Toute clarification est grandement appréciée.

+1

Veuillez consulter la section inférieure du [tutoriel Java] (http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html) sur les opérateurs d'incrémentation. – rgettman

+0

++ n travaillera mais soyez averti: la valeur de n dans la fonction si une copie de la valeur dans main. Donc, return (n + 1) aura le même effet que le paramètre d'emplacement n dans la fonction returnn est perdu une fois que la fonction retourne – tgkprog

+3

Juste 'return n + 1;' Il n'est pas nécessaire d'incrémenter la variable locale. – clcto

Répondre

1

Essayez les solutions suivantes;

public class Return { 
    public static void main(String[] args) { 
     int n = returnn(3); 
     System.out.println(n); 
    } 

    public static int returnn(int n) { 
     return ++n; 
    } 
} 
3

Vous devez écrire return ++n parce return n++ est évaluée à la valeur d'origine de n et ++n évalue à la valeur de n après avoir été incrémentée.

+0

Ou juste (n + 1) comme de toute façon la valeur du paramètre n est perdue une fois la fonction revenue. DonC++ n n'a pas d'effet à long terme ici – tgkprog

+0

Il suffit de le supprimer :) – Braj

+0

Pourquoi le supprimer? – Pacane

1

n++ incréments n par 1 Après avoir évalué n valeur actuelle de

++n incréments n par 1 et évalue sa valeur

Votre méthode returnn(int) devrait revenir ++n, au lieu de n++.