Java-需要公式方面的帮助吗
我最近在这里发了帖子,但我需要帮助(我是新来的)我得到了第一部分(SSS),但这是我需要帮助的第二部分,我不知道如何将a²=b²+c²-2bc cosA放入,sin b/b=sin a/a这是我的代码:Java-需要公式方面的帮助吗,java,math,trigonometry,jcreator,Java,Math,Trigonometry,Jcreator,我最近在这里发了帖子,但我需要帮助(我是新来的)我得到了第一部分(SSS),但这是我需要帮助的第二部分,我不知道如何将a²=b²+c²-2bc cosA放入,sin b/b=sin a/a这是我的代码: import java.util.Scanner; public class CosineLaw { public static void main(String[] args) { Scanner keyboard = new Scanner(System.in); boo
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);
}
}
}
}
Math.toDegrees从技术上讲应该位于外部:
double answerB = Math.toDegrees(Math.sin(sin b/b = sin a/a));
而且sinb/b和1是一样的。。。所以我认为你的方程没有意义。。。也许是罪(b)/b
试试看,看是否有效
最新编辑:代码说sinb/b,我误解了。代码应为:
double answerB = answerA*(Math.sin(Math.toRadians(b))/Math.sin(Math.toRadians(a)));
我想“answerA”和A(侧面)是一样的。看起来你把一切都放在了cos和sin里面。首先简化方程 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)
类似地,如果您在sinB/B=sinA/a中查找B,这将成为B=arcin(B*sinA/a):
此外,您可能还想回顾一下您的一些逻辑
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);
}
}
这会更有意义,因为您要检查的角色现在就是回答相关问题的角色。sinB/b与one不是一回事。B是指一个角度,其中as B是边长。此外,即使B和B相同(即10),答案也不是1。(以sin(10)/10为例),它可以工作,但我使用的SAS是a=49度,b=5度,c=7度。它给了我49.26分,而不是45.4分\这次我得到了5.327398075846185但是Math.sin应该期待Math.toRadians。。。。而不是数学。toDegrees(),试试Math.toRadians。尝试新的编辑?谢谢,但是对于答案b,我仍然在(sin b/b=sin a/a)之间得到错误;就编程语言而言,您所做的工作不起作用是赋值运算符,C#无法“解”方程,你需要自己对变量进行隔离,就像在我的答案开头一样。我回答的第二部分只是告诉您应该在if语句中移动两行。我没有改变其他任何事情。
answer = cos(A)
answer = answer * 2 * b * c
answer += b*b
answer += c*c
answer = sqrt(answer)
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);
}
}