0

我刚刚下载了 JDK,安装了 JGrasp,并且正在尝试编写我的第一个 Java 程序(三角形的斜边)。这是我的程序:

public class Hypot {

    public static void main(String args[]) {
        double hypotenuse;
        double d1;
        double d2;

        if (args.length != 2) {
            System.out.println("You need to enter two arguments!");
            System.exit(1);
        }

        try {
            d1 = new Double.parseDouble(args[0]);
            d2 = new Double.parseDouble(args[1]);
        } catch (NumberFormatException nfe) {
            System.out.println("Arguments need to be numbers!");
            System.exit(2);
        }


        hypotenuse = Math.sqrt((d1 * d1) + (d2 * d2));
        System.out.print("The hypotenuse of the right angle triangle with sides of " + d1 + "and" + d2 + "is" + hypotenuse);
    }
}

我遇到了这两个错误;我真的不明白他们是什么。

Hypot.java:16: error: cannot find symbol
   d1= new Double.parseDouble(args[0]);
                 ^
  symbol:   class parseDouble
  location: class Double
Hypot.java:17: error: cannot find symbol
   d2= new Double.parseDouble(args[1]);
                 ^
  symbol:   class parseDouble
4

3 回答 3

3

这是一个静态方法,不要写新的。您只使用 new 来实例化类。“parseDouble”不是内部类,所以不能使用 new。方法只是被调用。“工厂模式”使用静态方法返回一个实例,这意味着静态方法包含实例化(新的)。

于 2013-08-28T16:32:33.883 回答
2

Double.parseDouble是一种静态方法,因此您不必实例化Double即可使用parseDouble. 话虽如此,如果你想调用 Double 拥有的非静态方法,它看起来像new Double(string).doubleValue();

   d1= Double.parseDouble(args[0]);
   d2= Double.parseDouble(args[1]);
于 2013-08-28T16:33:35.707 回答
0

此语句中的问题

   d1= new Double.parseDouble(args[0]);

是您正在尝试创建一个从返回的原始双精度实例parseDouble

所以在编译过程中这个语句变成了

 d1 = new double;

这在语法上是不正确的。

由于 parseDouble 返回一个双精度数,因此您可以简单地分配给您的 d1 双精度变量,而无需使用new运算符:

d1 = Double.parseDouble(args[0]);

另请注意,要访问static变量/方法,您不必创建类的实例。您可以使用类名访问它们,例如:Double.parseDouble(args[0]);

编辑

尝试这个:

  public class Hypot{
   public static void main(String args[])
  { 
   double hypotenuse;
   double d1 = 0.0d;
   double d2 = 0.0d;

   if(args.length!=2)
   {
   System.out.println("You need to enter two arguments!");
   System.exit(1);
   }

   try
   {
   d1= Double.parseDouble(args[0]);
   d2= Double.parseDouble(args[1]);
   }
   catch(NumberFormatException nfe)
   {
   System.out.println("Arguments need to be numbers!");
   System.exit(2);
   } 




   hypotenuse=Math.sqrt((d1*d1)+(d2*d2));
   System.out.print("The hypotenuse of the right angle triangle with sides of "+d1+"and"+d2+"is"+hypotenuse);
  }
 }
于 2013-08-28T16:32:08.710 回答