Arcsine不会更改Java中变量的值
为了解决我的问题,我浏览了很多网站。我也试着在Java中查找任何YT或其他关于trig的视频,但什么也找不到。(我是一个noob,所以我也不总是了解大多数网站所指的一切) 不管怎么说,我正试图制作一个简单的程序来计算斯内尔定律的部分内容(我知道有些网站可以这样做)。但是arc sine似乎根本不会影响我的变量值 代码如下:Arcsine不会更改Java中变量的值,java,double,trigonometry,Java,Double,Trigonometry,为了解决我的问题,我浏览了很多网站。我也试着在Java中查找任何YT或其他关于trig的视频,但什么也找不到。(我是一个noob,所以我也不总是了解大多数网站所指的一切) 不管怎么说,我正试图制作一个简单的程序来计算斯内尔定律的部分内容(我知道有些网站可以这样做)。但是arc sine似乎根本不会影响我的变量值 代码如下: import java.util.Scanner; public class trig_functions_test { public static void ma
import java.util.Scanner;
public class trig_functions_test {
public static void main(String[] args) {
Scanner HumanInput = new Scanner (System.in);
double n1, n2, Oi, OR;
System.out.println("Enter the first medium's index of refraction.");
n1 = HumanInput.nextDouble();
System.out.println("Enter the second medium's index of refraction.");
n2 = HumanInput.nextDouble();
System.out.println("Enter the angle of incidence.");
Oi = HumanInput.nextDouble();
System.out.println("Enter the angle of refraction.");
OR = HumanInput.nextDouble();
//if angle of refraction is the missing variable
if (OR == 0) {
Oi = Math.toRadians(Oi);
OR = (n1*Math.sin(Oi)/n2);
OR = Math.toRadians(OR);
OR = Math.asin (OR);
OR = Math.toDegrees(OR);
System.out.println(OR);
}
}
}
调试程序时,我得到以下结果:
首先,以下是正在实施的计划:
(0表示没有折射角)
这些是计算if语句中第2行(?)后的结果:
将“或”转换为弧度后,“或”的值变为0.011364657670640462
然后,这里是有问题的部分,对具有弧正弦的部分进行评估,“或”变为0.011364*90231927541*
(更改的部分在*
之间指示)
最后,“或”再次转换为度,在第二行(或多或少)“或”之后,我将恢复到我的值,然后等于
0.6511*609374816383*
(同样,更改的部分在*
之间指示)。您正在使解决方案变得比需要的复杂得多。您应该通过求解斯内尔定律中的折射角,一次性计算表达式,如下所示:
Oi = Math.toRadians(Oi);
OR = Math.asin((n1/n2)*Math.sin(Oi));
OR = Math.toDegrees(OR)
System.out.println("Angle of refraction: "+OR);
你的麻烦来自这一行:
OR = Math.toRadians(OR);
进行此计算时,您已经有了以弧度表示的答案:
OR = (n1*Math.sin(Oi)/n2);
再次将其转换为弧度时,会使结果倾斜。删除或=Math.toRadians(或)
和您的程序将按预期工作