Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Problème de débutant]

...

    23 septembre 2016 à 20:11:01

    Bonjour !

    Alors voilà :

    Je commence depuis quelques temps à programmer en Java, et, cet après midi, je commence un programme permettant, grâce au théorème de Pythagore, de calculer soit l'hypoténuse soit un des côtés d'un triangle rectangle. Bon. Vous suivez ? Oui ? Je continue.

    Voila mon code, je vous raconte le reste ensuite.

    import java.io.IOException;
    import java.util.*;
    import java.awt.Color;
    import java.awt.*;
    public class Pythagore {
    	
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		
    		
    		
    		
    		System.out.println("Bonjour. Dans ce micro programme vous allez pouvoir calculer la longueur de n'importe quel côté d'un triangle rectangle.");
    		System.out.println("Premièrement, entrez 1 ou 2");
    		System.out.println("1: Calcule l'hypoténuse");
    		System.out.println("2: Calcule coté adj/opposé");
    		System.out.println("Attention il faut connaitre au moins deux longueurs de côtés du triangle.");
    		
    		Scanner d = new Scanner(System.in);
    	    int str = d.nextInt();
    	    {
    	    	if(str == 1)
    	    	    
    		    	System.out.println("Vous avez choisi de calculer la longueur de l'hypoténuse");	    
    	    	System.out.println("Entrez maitenant la longueur du premier côté.");
    	    	Scanner a = new Scanner(System.in);
    	    	int co1 = a.nextInt();
    	    	
    	    	System.out.println("Entrez maitenant la longueur du second côté.");
    	    	Scanner g = new Scanner(System.in);
    	    	int co2 = g.nextInt();
    	    	int hyp = (co1*co1)+(co2*co2);
    	    	System.out.println("La longueur de l'hypoténuse est : "+Math.sqrt(hyp));
    	    	System.out.println("Valeur exacte (si nombre à virgule) : Racine de "+hyp);    		
    	    	
    	    	
    	    	}     
    	    {
                if(str == 2)
    	    	    
    		    	System.out.println("Vous avez choisi de calculer la longueur d'un des deux côtés, autre que l'hypoténuse.");	    
    	    	System.out.println("Entrez maitenant la longueur du premier côté(autre que l'hypoténuse).");
    	    	Scanner x = new Scanner(System.in);
    	    	int hY = x.nextInt();
    	    	
    	    	System.out.println("Entrez maitenant la longueur de l'hypoténuse.");
    	    	Scanner Y = new Scanner(System.in);
    	    	int HY2 = x.nextInt();
    	    	int hypo = (hY*hY)-(HY2*HY2);
    	    	System.out.println("La longueur du côté à calcler est : "+Math.sqrt(hypo));
    	    	System.out.println("Valeur exacte (si nombre à virgule) : Racine de "+hypo);
    	    	
    	    		
    	    }
    	    
    	    
    	    
    	    
    	    
    	}
    	    
    		
    	    }
    
    	
    	
    

    Voila mon problème : 

    Premièrement, lorsque je choisis de calculer la longueur de l'hypoténuse, le programme fonctionne très bien, mais après m'avoir donné mes valeurs le programme continue et lance le second "IF", comme si j'avais voulu calculer un côté.

    J'aimerais donc savoir comment, a la fin de mon premier (et donc de mon second) IF comment revenir à la ligne 1 du code, pour "recommencer". Si possible effacer tout de la console mais c'est esthétique et optionnel.

     [EDIT] Et que surtout le second IF ne se lance pas si vous voyez ce que je veux dire :D

    Merci beaucoup d'avance pour toutes vos réponses :)

    -
    Edité par SunAtic 23 septembre 2016 à 20:12:27

    • Partager sur Facebook
    • Partager sur Twitter
      23 septembre 2016 à 22:28:02

      Il faut que tu revoies le placement des accolades.

      Ensuite, cherche "boucles java" sur Google pour voir comment faire "recommencer" ton programme.

      Edit : ce n'est pas une erreyr, mais tu n'es pas obligé de recréer un Scanner à chaque fois que tu lis une valeur

      -
      Edité par radwimp 23 septembre 2016 à 22:30:21

      • Partager sur Facebook
      • Partager sur Twitter
        23 septembre 2016 à 22:30:26

        Merci beaucoup pour ta réponse ;)

        Comment puis-je améliorer mes accolades ?

        J'ai appris pas mal de trucs sur les while, mais je ne sais pas trop comment les utiliser dans mon code. 

        [HELP] ?

        -
        Edité par SunAtic 23 septembre 2016 à 22:41:30

        • Partager sur Facebook
        • Partager sur Twitter
          23 septembre 2016 à 22:47:50

          Les accolades doivent entourer le code correspondant à tes if et pas plus (les if ne doivent pas être dans ces accolades).

          Donc en gros tu dois sortir tes if des accolades.

          -
          Edité par radwimp 23 septembre 2016 à 22:49:29

          • Partager sur Facebook
          • Partager sur Twitter
            24 septembre 2016 à 12:32:02

            Merci pour ton message ;)

            J'ai réglé mon problème d'acollade et ais mis des while mais le problème reste le suivant :

            Des que je mais mon while pour hypoténuse par exemple tout marche bien mais après m'avoir donné les résults il me repose la première question, après le while.

            Si je mais mon while(str==1) avant le menu il me dit que str n'est pas une variable reconnue. 

            • Partager sur Facebook
            • Partager sur Twitter
              24 septembre 2016 à 16:40:49

              À quelle condition tu veux que le programme recommence ?

              Si par exemple tu veux demander à l'utilisateur s'il veut recommencer après avoir fait les calculs, ça donne quelque chose comme ça :

              int continuer;
              do {
                  // ton code
                  // ...
                  System.out.println("Voulez-vous recommencer ? (1: Oui, 2: Non)");
                  continuer = sc.nextInt();
              } while(continuer == 1);



              • Partager sur Facebook
              • Partager sur Twitter

              [Problème de débutant]

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown