2013-10-02 39 views
1

我最近在這裏發佈,但我需要幫助(我很新)我得到了第一部分(SSS),但它的第二部分我需要幫助,我沒有了解如何把A²=稱b²+C² - 2BC小築在與罪惡b/b = SIN A/A這裏是我的代碼:Java-需要公式的幫助

import java.util.Scanner; 

public class CosineLaw { 

public static void main(String[] args) { 
    Scanner keyboard = new Scanner(System.in); 
    boolean sss = new Boolean(true); 

    System.out.println("Are you working with an SSS?[y/n]"); 
    char askingSSS =keyboard.next().charAt(0); 
    if(askingSSS == 'y'){ 
     System.out.println("Please enter an a side value:"); 
     double a = keyboard.nextDouble(); 
     System.out.println("Please enter a b side value:"); 
     double b = keyboard.nextDouble(); 
     System.out.println("Please enter a c side value:"); 
     double c = keyboard.nextDouble(); 
      double answerA = Math.toDegrees(Math.acos((b*b+c*c-a*a)/(2*b*c))); 
      double answerB = Math.toDegrees(Math.acos((c*c+a*a-b*b)/(2*c*a))); 
      double answerC = Math.toDegrees(Math.acos((b*b+a*a-c*c)/(2*b*a))); 
       System.out.println("A: " + answerA); 
       System.out.println("B: " + answerB); 
       System.out.println("C: " + answerC); 

    }else if(askingSSS == 'n'){ 
     System.out.println("Are you working with SAS?[y/n]"); 
     char askingSAS =keyboard.next().charAt(0); 
     System.out.println("Please enter the 2 sides and 1 angle:"); 
     char twoSideOneAngle =keyboard.next().charAt(0); 
     if(askingSAS == 'y'){ 
      System.out.println("Please enter an angle for a:"); 
      double a = keyboard.nextDouble(); 
      System.out.println("Please enter a side value for b:"); 
      double b = keyboard.nextDouble(); 
      System.out.println("Please enter a side value for c:"); 
      double c = keyboard.nextDouble(); 
       double answerA = Math.cos(Math.toDegrees(b*b+c*c-2*b*c)*(a)); 
       double answerB = Math.sin(Math.toDegrees(sin b/b = sin a/a)); 
       double answerC = (b*b+a*a-c*c)/(2*b*a); 
        System.out.println("A: " + answerA); 
        System.out.println("B: " + answerB); 
        System.out.println("C: " + answerC); 
      } 
     } 
} 

}

回答

1
double answerB = Math.sin(Math.toDegrees(sin b/b = sin a/a)); 

的Math.toDegrees應該是技術上的外:

double answerB = Math.toDegrees(Math.sin(sin b/b = sin a/a)); 

此外罪B/B是同樣的事情,1 ...所以,我認爲你的等式就沒有意義了......也許罪(AB)/ B ....

double answerB = a*(Math.sin(b)/Math.sin(a)); 

試一下,看看它是否有效。

最新編輯:代碼說sin b/b,我誤解了。代碼應該是:

double answerB = answerA*(Math.sin(Math.toRadians(b))/Math.sin(Math.toRadians(a))); 

我假設「answerA」與A(邊)相同。

+0

sinB/b與一個不同。 B是指角度,其中b是邊長。此外,即使B和b相同(即10),答案也不是1(例如,以sin(10)/ 10)。 – Maria

+0

它可以工作,但是我使用的SAS的類型是= 49度,b = 5,c = 7。它給我49.26而不是45.4。 :\ – user2809115

+0

嘗試更新的答案。 – msj121

2

它看起來像你把所有東西都放在cos和罪中。首先簡化等式。

a²=b²+c²-2bc cosA變爲a =(b²+c²-2bc cosA)^(1/2)。然後你可以從內到外工作。

在僞代碼:

answer = cos(A) 
answer = answer * 2 * b * c 
answer += b*b 
answer += c*c 
answer = sqrt(answer) 

同樣,如果你正在尋找的B SINB/B =新浪/ A,這成爲B =反正弦(B *新浪/ A):

answer = sin(A) 
answer = b * answer 
answer = answer/a 
answer = arcsin(answer) 

另外你可能想要查看一些你的邏輯。

else if(askingSSS == 'n'){ 
    System.out.println("Are you working with SAS?[y/n]"); 
    char askingSAS =keyboard.next().charAt(0); 
    if(askingSAS == 'y'){ 
     // I change code here 
     System.out.println("Please enter the 2 sides and 1 angle:"); 
     char twoSideOneAngle =keyboard.next().charAt(0); 
     System.out.println("Please enter an angle for a:"); 
     double a = keyboard.nextDouble(); 
     System.out.println("Please enter a side value for b:"); 
     double b = keyboard.nextDouble(); 
     System.out.println("Please enter a side value for c:"); 
     double c = keyboard.nextDouble(); 
      double answerA = Math.cos(Math.toDegrees(b*b+c*c-2*b*c)*(a)); 
      double answerB = Math.sin(Math.toDegrees(sin b/b = sin a/a)); 
      double answerC = (b*b+a*a-c*c)/(2*b*a); 
       System.out.println("A: " + answerA); 
       System.out.println("B: " + answerB); 
       System.out.println("C: " + answerC); 
     } 
    } 

這樣做會更有意義,因爲您正在檢查的字符現在是回答相關問題的字符。

+0

謝謝,但對於答案B,我仍然得到(sin b/b = sin a/a)之間的錯誤; – user2809115

+0

你在做什麼在編程語言方面不起作用。 =是一個賦值運算符,C#沒有辦法「解決」一個方程,你需要爲你自己想要的變量進行隔離,就像在我的答案開始時一樣。我的答案的第二部分只是爲了告訴你,你應該在if語句中移動兩行。我沒有改變任何東西。 – Maria