编辑1:
程序应输出: java CircleBugs 1.2 0.6 r = 1.2,t = 0.6 c = 7.5398223686155035 a = 4.523893421169302 x = 0.9904027378916139,y = 0.6775709680740424
我的错误:
线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException:0 在debug.Debug.main(Debug.java:24) C:\用户\用户\应用程序数据\本地\的NetBeans \缓存\ 8.2 \ executor- snippets \ run.xml:53:Java返回:1 BUILD FAILED(总时间:0秒)
我在调试此程序时出现问题:
public static void main(String[] args) {
double t = Double.parseDouble(args[0]);
int r = Integer.parseInt(args[]);
System.out.println("r = " + r + ", t = " + t); //Added the ";" to close the line of code
double c = 2 * Math.PI * r;
double A = Math.PI * r * r;
double x = r * Math.cos(Math.toRadians(t)); //fixed
double y = r * Math.sin(Math.toRadians(t)); //fixed
System.out.println("c = " + c );
System.out.println("A = " + A );
System.out.println("x = " + x + ", " + "y = " + y );
}
答案 0 :(得分:1)
使用Double.parseDouble(args[0])
时,它假定您在命令行中为此arg值传递值,否则数组为空(因此您在从空数组调用第一个元素时获得indexoutofboundexception)。所以只需改变这样的代码
double t = Double.parseDouble(args[0]);
int r = Integer.parseInt(args[1]);
在命令行中执行此操作。
java test 5 4 //5 in place of t and 4 in place of r
我将我的文件保存为test.java,因此请将test替换为您的文件名并运行。
答案 1 :(得分:0)
args
数组为空,导致此错误。
问题是您没有为程序提供任何输入,因此您尝试在空数组上parseDouble(args[0])
。
使用类似的东西:
Scanner sc = new Scanner(System.in);
double t = sc.nextDouble();
int r = sc.nextInt();
您还应该使用以下方法:
Math.cos(Math.toRadians(t))
Math.sin(Math.toRadians(t))
答案 2 :(得分:0)
您必须使用Math.cos()
和Math.sin()
方法。
double x = r * Math.cos(t);
double y = r * Math.sin(t);