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

これら 2 つのエラーが発生しています。私は彼らが何であるかを本当に理解していません。

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 を記述しないでください。クラスをインスタンス化するためにのみ new を使用します。「parseDouble」は内部クラスではないため、new は使用できません。メソッドが呼び出されるだけです。「ファクトリ パターン」は、静的メソッドを使用してインスタンスを返します。つまり、静的メソッドにはインスタンス化 (新しい) が含まれます。

于 2013-08-28T16:32:33.883 に答える
2

Double.parseDoubleDoubleは静的メソッドなので、使用するためにインスタンス化する必要はありません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]);

から返されるプリミティブ double のインスタンスを作成しようとしているということですparseDouble

したがって、コンパイル中にこのステートメントは次のようになります

 d1 = new double;

これは構文的に正しくありません。

newparseDouble は double を返すので、演算子を使用せずに d1 double 変数に単純に割り当てることができます。

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 に答える