2015-12-18 3 views
-1

Я делаю программу теорем Пифагора для решения недостающей стороны, и если пользователь вводит 0 в качестве значения, означающего, что это недостающая сторона для решения. Моя программа не получает правильного ответа. Ваша помощь очень ценится.Ошибка в Программе теорем Пифагора

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

Какие значения вы указали, какой результат вы получили, и что вы ожидали от этого? – Andreas

+2

newb = Math.pow (b, b); должен быть newb = Math.pow (b, 2). То же самое для c. Math.pow (число, мощность) – Jay

+0

Или 'newb = b * b'. – Andreas

ответ

0

Хорошо! Поэтому проблема, которую я вижу в этом коде Java, будет заключаться в том, что она не обязательно соответствует реальной теореме пифагора. Я вижу, что if (A == 0) затем выполняет фактическое уравнение, но вы должны помнить, что переменная A не является гипотенузой треугольника!

A^2 + B^2 = C^2 (C - гипотенуза). Если вы хотите сделать так, чтобы он нашел какую-либо часть треугольника, вы должны помнить, что нужно вывести уравнение, чтобы вы могли найти недостающие боковая сторона! Например, у вас есть сторона A и C, но вы хотите найти сторону B, тогда уравнение будет B^2 = C^2-A^2.

Прежде всего, я вижу, что у вас есть newb = Math.pow (b, b); который будет приводить вашу переменную в себя! Даже полномочия - всего 2, поэтому это будет newb = Math.pow (b, 2);

СОВЕТ! Не забудьте загладить второе слово в переменном имени, например 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!"); 


     } 
    }