2015-12-18 1 views
-1

Je suis en train de créer un programme de théorème de Pythagore pour résoudre un côté manquant, et si l'utilisateur entre 0 comme valeur qui signifie que c'est le côté manquant à résoudre. Mon programme n'obtient pas la bonne réponse. Votre aide est grandement appréciée.Erreur dans le programme de théorème de Pythagore

import java.util.Scanner; 
import java.lang.Math; 

public class pythagTheorem { 
    static double a; 
    static double b; 
    static double c; 
    static double newa; 
    static double newb; 
    static double newc; 

    public static void main(String[] args) { 
    Scanner scan= new Scanner(System.in); 
    System.out.println("Enter the value of a"); 
    a=scan.nextDouble(); 
    scan.nextLine(); 
    System.out.println("Enter the value of b"); 
    b=scan.nextDouble(); 
    scan.nextLine(); 
    System.out.println("Enter the value of c"); 
    c=scan.nextDouble(); 
    scan.nextLine(); 
    if(a==0) 
    { 
     newb=Math.pow(b, b); 
     newc=Math.pow(c, c); 
     double result=newc-newb; 
     newa=Math.sqrt(result);   
    }  
    System.out.println("The value of a is " + newa); 
    } 
} 
+1

Quelles valeurs avez-vous saisies, quel résultat avez-vous obtenu et qu'espériez-vous que ce soit? – Andreas

+2

newb = Math.pow (b, b); devrait être newb = Math.pow (b, 2). Idem pour c. Le Math.pow est (nombre, puissance) – Jay

+0

Ou 'newb = b * b'. – Andreas

Répondre

0

Okay! Donc, le problème que je vois avec ce code Java serait qu'il ne suit pas nécessairement le théorème de Pythagore réel. Je vois que si (A == 0) alors exécuter l'équation réelle, mais vous devez vous rappeler que la variable A n'est pas l'hypoténuse du triangle! A^2 + B^2 = C^2 (C étant l'hypoténuse) Si vous voulez faire en sorte qu'il trouve une partie du triangle, vous devez vous rappeler de dériver l'équation de sorte que vous pouvez trouver le manquant côté! Comme, vous avez le côté A et C mais vous voulez trouver le côté B, l'équation serait alors B^2 = C^2-A^2. Pour finir, je vois que vous avez newb = Math.pow (b, b); cela alimenterait votre variable à elle-même! Même les puissances sont seulement 2, donc ce serait newb = Math.pow (b, 2);

ASTUCE! N'oubliez pas de mettre le deuxième mot en majuscule dans un nom de variable comme numa à numA

/* REMEMBER THAT A NUMBER MUST NEVER BE GREAT THAN C UNLESS IT IS THE UNKNOWN OR YOU WILL ENCOUNTER A NONREAL NUMBER BECAUSE YOU CAN'T SQUARE ROOT A NEGATIVE NUMBER*/ 
    import java.util.Scanner; 
    import java.lang.Math; 

    public class pythagTheorem { 

     static double a; 
     static double b; 
     static double c; 
     static double newa; 
     static double newb; 
     static double newc; 

     public static void main(String[] args) { 

      Scanner scan = new Scanner(System.in); 
      System.out.println("Enter a ZERO for the unknown side!"); 

      System.out.println("Enter the value of side A :: "); 
      a = scan.nextDouble(); 

      System.out.println("Enter the value of B :: "); 
      b = scan.nextDouble(); 

      System.out.println("Enter the value of C :: "); 
      c = scan.nextDouble(); 

      if (a == 0) { 

       newc = Math.pow(c, 2); 
       newb = Math.pow(b, 2); 

       newa = Math.sqrt(newc - newb); 

       System.out.println("Your missing side is :: " + newa); 

      } 
      else if(b == 0){ 

       newc = Math.pow(c, 2); 
       newa = Math.pow(a, 2); 

       newb = Math.sqrt(newc - newa); 

       System.out.println("Your missing side is :: " + newb); 
      } 
      else if(c == 0){ 

       newa = Math.pow(a, 2); 
       newb = Math.pow(b, 2); 

       newc = Math.sqrt(newa + newb); 

       System.out.println("Your missing side is :: " + newc); 
      } 
      else 
       System.out.println("Sorry! There is an error!"); 


     } 
    }