problème programmation JAVA
Répondre à la discussion
Affichage des résultats 1 à 13 sur 13

problème programmation JAVA



  1. #1
    anis.thfc

    problème programmation JAVA


    ------

    Bonsoir tout le monde.
    je suis débutant en JAVA!
    voilà, en faisant un exo sur la programmation en JAVA, je suis tombé sur une question que j'arrive pas résoudre.
    l'exercice:
    on a deux reel a et b.
    on saisie un autre reel c. (c'est fait)
    la question:
    Créer une méthode public booléen indiquant si le nombre c est entre a et b.

    voilà ce que j'ai éssayéça ne marche pas) proposez moi vos solutions svp MERCI!

    Code:
            double c:=3;
    	public static boolean Appartient(){
    		double i=a;
                  
                    boolean v=false;
    		while(v=false && i<=b){
    		if(k=i){
    			return v=true;
    		}
    		else 
    		i++;	}}}

    -----
    Dernière modification par JPL ; 16/06/2016 à 13h44. Motif: Ajout de la balise Code (#) pour garder l'indentation

  2. #2
    mAdVax

    Re : problème programmation JAVA

    Bonjour

    Houla, c'est compliqué! Une seule ligne suffirait!
    En plus, l'algorithme est faux: il s'agit de traiter des réels, mais la boucle incrémente de 1 à chaque passage, et donc toutes les valeurs intermédiaires sont oubliées. Cet algo ne fonctionnerait qu'avec des valeurs entières.

    Ceci dit, dans cet algorithme, je détecte plusieurs problèmes, et aussi plusieurs maladresses, sans parles des erreurs de syntaxe de base (ça ne compile pas, n'est-ce pas?)
    Il y a confusion entre « = » et « == ». Le second doit être utilisé pour tester une égalité. Sauf en de rares cas, le premier n'est pas considéré comme retournant une valeur utilisable.
    « k » n'est pas défini.
    La condition « v == false » du « while » n'est jamais fausse, car le « return » est exécuté avant.
    Si la boucle se termine quand la condition « i<=b » est fausse, il ne se passe plus rien: il manque une valeur de retour.
    Un test « v == false » s'écrit « !v »; « v == true » s'écrit juste « v » (mais les versions longues fonctionnent).

  3. #3
    pm42

    Re : problème programmation JAVA

    En effet.
    En plus de tout cela, il est recommandé d'utiliser les balises CODE pour faciliter la lisibilité.

    Je suppose aussi que la personne qui a donné l'exercice s'attend à voir une fonction qui reçoit a, b et c en arguments. Pas quelque chose qui utilise des variables externes. Mais je peux me tromper.

  4. #4
    anis.thfc

    Re : problème programmation JAVA

    Bonjour
    pouvez vous me proposer vos solution svp :/
    j'arrive toujours pas a resoudre ça!
    merci

  5. A voir en vidéo sur Futura
  6. #5
    pm42

    Re : problème programmation JAVA

    Citation Envoyé par anis.thfc Voir le message
    pouvez vous me proposer vos solution svp :/
    Ce n'est pas comme ça que le forum fonctionne. On ne fait pas tes exos à ta place.

    Citation Envoyé par anis.thfc Voir le message
    j'arrive toujours pas a resoudre ça!
    Rebondir sur la réponse détaillée de mAdVax et poser des questions aiderait sans doute.

  7. #6
    matthieu2

    Re : problème programmation JAVA

    Bonjour,

    Un if(){} ne suffirait-il pas?

    Cordialement,

  8. #7
    AbA2L

    Re : problème programmation JAVA

    Salut voici un example qui marche tres bien:

    Code:
    import java.util.Scanner;
    
    public class Inclusion {
    	
    	static double c;
    	static int a, b;
    	public static void main(String[] args) {
    		//declaration du Scanner
    		Scanner sc = new Scanner (System.in);
    		/*  get(a, b, c)  */
    		System.out.print("a= ");
    		a=sc.nextInt();
    		System.out.print("b= ");
    		b=sc.nextInt();
    		System.out.print("c= ");
    		c=sc.nextDouble();
    		
    		if (Appartient()==true){
    			System.out.println(c+" fait est situé entre "+a+" et "+b);
    		} else {
    			System.out.println(c+" fait n'est pas situé entre "+a+" et "+b);
    		}
    	}
    	
    	public static boolean Appartient(){
    		boolean bool = false;
    		if (a>b){
    			if (a>c && b<c){
    				bool = true;
    			}
    		} else if (a<b){
    			if (b>c && a<c){
    				bool = true;
    			}
    		}
    		return bool;
    	}
    
    }
    je m'esxcuse pour l'absence de commentaires.
    Nous ne nous approchons de la verité que dans la mesure oú nous nous éloignons de la vie

  9. #8
    pm42

    Re : problème programmation JAVA

    Citation Envoyé par AbA2L Voir le message
    je m'esxcuse pour l'absence de commentaires
    Quitte à t'excuser, tu devrais plus le faire pour avoir donner une solution toute cuite à quelqu'un qui ne cherche pas à apprendre et aussi pour le fait que c'est bourré de choses à ne pas faire :
    - utilisation de variables globales (static) plutôt que de les passer en argument
    - test des booléens en == true
    - code compliqué pour traiter le cas b > a
    - la méthode Appartient ne respecte pas les conventions de nommage de Java
    - la variable bool a un nom absolument pas parlant
    - elle est de plus inutile et son utilisation via les if complique le code
    - l'énoncé disait que a et b étaient des réels, tu as mis des entiers

    Maintenant qu'une solution est donnée, je ferais plutôt par ex :

    Code:
    public static boolean appartient(double a, double b, double c) {
      if (a>=b) return c>a && c<b else return appartient(b, a, c);
    }
    Probablement avec un peu plus d'accolades et peut-être un commentaire pour expliquer le pourquoi de l'appel récursif à 1 niveau.

    P.S : je viens de me réveiller et je n'ai pas testé le code. En cas d'erreur, j'aurais l'air d'un vieux con qui donne des leçons mais ne sait pas faire. J'assume
    Dernière modification par pm42 ; 17/06/2016 à 07h21.

  10. #9
    AbA2L

    Re : problème programmation JAVA

    Citation Envoyé par pm42 Voir le message
    P.S : je viens de me réveiller et je n'ai pas testé le code. En cas d'erreur, j'aurais l'air d'un vieux con qui donne des leçons mais ne sait pas faire. J'assume
    tu a bien raison ton code ne marche pas. mais j'ai corrigé l'erreur pour mon code:
    Code:
            public static void main(String[] args) {
    		//declaration du Scanner
    		Scanner sc = new Scanner (System.in);
    		
    		/*  get(a, b, c)  */
    		System.out.print("a= ");
    		double a=sc.nextDouble();
    		System.out.print("b= ");
    		double b=sc.nextDouble();
    		System.out.print("c= ");
    		double c=sc.nextDouble();
    		 
    		if (Appartient(a, b, c)==true){
    			System.out.println(c+" est situé entre "+a+" et "+b);
    		} else {
    			System.out.println(c+" n'est pas situé entre "+a+" et "+b);
    		}
    	}
    	
    	public static boolean Appartient(double a, double b, double c){
    		boolean bool = false;
    		if (a>b){
    			if (a>=c && b<=c) bool = true;  //je trouve que l'absence d'acolades complique le code!
    		} else if (a<b) {
    			if (b>=c && a<=c) bool = true;
    	    } else if (a==b){
    	    	System.out.println("Erreur: a=b");
    	    }
    		return bool;
    	}
    Dernière modification par AbA2L ; 17/06/2016 à 08h20.
    Nous ne nous approchons de la verité que dans la mesure oú nous nous éloignons de la vie

  11. #10
    pm42

    Re : problème programmation JAVA

    Ca veut dire quoi "fait est situé" ?

    Blague à part, c'est toujours 10 fois trop long, verbeux...

    J'ai corrigé l'erreur plus haut :

    Code:
    public static boolean appartient(double a, double b, double c) {
      if (a<=b) return c>a && c<b; else return appartient(b, a, c);
    }

  12. #11
    Bluedeep

    Re : problème programmation JAVA

    IL n'y a pas d'opérateur
    Code:
    a ? b : c
    en java ?

  13. #12
    pm42

    Re : problème programmation JAVA

    Si. J'ai failli le mettre plus haut en code alternatif mais après l'avoir écrit, c''était vraiment très peu lisible...

    On pourrait l'utiliser pour éviter de dupliquer les println par ex :

    Code:
    bool entre = appartient(a, b, c);
    System.out.println(c+(entre?" est":"n'est pas"+" situé entre "+a+" et "+b);
    Ce n'est quand même pas top. En utilisant un printf, ce serait sans doute mieux mais là, il faut que j'aille bosser.

  14. #13
    AbA2L

    Re : problème programmation JAVA

    j'avou que c'est mieux.
    Nous ne nous approchons de la verité que dans la mesure oú nous nous éloignons de la vie

Discussions similaires

  1. Programmation Java
    Par flolarajasse dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 03/10/2012, 11h33
  2. Java Programmation
    Par livre dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 27/01/2006, 21h58
  3. Java programmation
    Par invite56460777 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 21/04/2005, 21h17
  4. Programmation en Java
    Par invited2e9dd9d dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 14/04/2005, 18h37
  5. programmation java
    Par invite49182f81 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 2
    Dernier message: 24/04/2003, 21h24