错误线程“main”

时间:2017-04-06 03:51:42

标签: java indexoutofboundsexception

以下代码导致异常,我不完全确定为什么,任何想法?

异常

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at Circle.CircleApp.main

代码

class CircleApp {

    public static void main(String[] args) {
        double rd = Double.parseDouble(args[0]);
        System.out.println("Circle radius = " + rd);

        Circle circle1 = new Circle(rd);

        double cir = circle1.calCircumference();
        double area = circle1.calArea();

        System.out.println("Circumference = " + cir);
        System.out.println("Area = " + area);
    }
}

class Circle {

    private double r;

    Circle(double rd) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void Circle(double r) {

    }

    double calCircumference() {
        return 2 * Math.PI * r;
    }

    public double calArea() {
        return Math.PI * r * r;
    }
}

3 个答案:

答案 0 :(得分:0)

您似乎缺乏对Java的超级基本理解。这里真正的答案是:退一步,做更多的学习。

但是,让我们提供一些细节:

  • 您收到该异常,因为您在运行时没有将预期的双号传递给您的程序。请参阅here了解其含义。
  • 在您的特定情况下,您使用的是NetBeans - 请参阅here如何在这种情况下传递参数。

关键是:你的代码希望找到一个双号,所以你可以简单地传递任何类型的数字来看看会发生什么。

会发生什么:另一个例外,因为

throw new UnsupportedOperationException("Not supported yet.");

但是你的代码正在调用那个方法。所以,你需要:

public class Circle {
  private double r;
  public Circle(double r) {
    this.r = r;
  }

然后:这里:

public void Circle(double r) {
}

绝对是胡说八道。这甚至都没有编译。

答案 1 :(得分:0)

如果从命令行运行程序,请使用以下内容:

stargazer(did.student,student.control.kmt,student.control.neu,student.control.dpp,header = FALSE,
          title="DD Model",
          covariate.labels = c("Treatment","group","Treatment*group"),
          dep.var.labels = "attitude",
          column.labels   = c("","party1","Independent","party2"),
          label = "DiD-students")

例如:

java CircleApp <double number>

如果使用ide,则应配置运行设置。必须有一个名为程序参数的字段或类似的东西。

答案 2 :(得分:0)

使用它来编译代码:

javac CircleApp.java

java CircleApp 10.0

10.0可以替换为您自己的任何双号