2017-09-21 5 views
1

J'essaie de créer une méthode qui vérifie si une entrée est un double supérieur à zéro. Vérification si elle est en effet un double fonctionne très bien avec mon code, mais, même si en entrant négatifs ses invites pour saisir à nouveau la valeur, à la fin, après avoir entré une valeur positive, il renvoie le négatif est entré plus tôtLa méthode renvoie une valeur négative

public static double isValid(double v){ 
    Scanner scan = new Scanner(System.in); 
    if (scan.hasNextDouble()){ 
    v = scan.nextDouble(); 
    if (v<=0) { 
     System.out.println("You have to use a positive number"); 
     isValid(v); 
    } 
    else { 
     return v; 
    } 
    } 
    else { 
    System.out.println("Thats not how it works"); 
    isValid(v); 
    } 
    return v; 
} 

Répondre

2

vous devez retourner le résultat de vos appels récursifs:

return isValid(v); 

Il est de retour de la dernière valeur non valide, car après le retour de l'appel récursif, l'exécution se poursuit jusqu'au retour au bas de la méthode, le retour v. À ce stade, v est la dernière valeur non valide.

+0

De plus, il n'y a pas vraiment besoin de récursivité –

+0

@KevinAnderson Vrai, mais ce n'est pas la question à portée de main. S'il s'agissait d'un examen de code, nous pourrions creuser un peu plus. – Carcigenicate

+0

@KevinAnderson Pourquoi pas? –