我的java程序有问题吗?

时间:2018-04-07 10:44:27

标签: java

编辑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 );  
   } 

3 个答案:

答案 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);