-1

a、b、c を与えて 2 次方程式を使用して根を解くことができる Java プログラムを作成しています。

メインコードは次のとおりです。

//main file

class Call
{
       public static void main(String args [])
    {
            double a=Double.parseDouble(args[0]);
            double b=Double.parseDouble(args[1]);
            double c=Double.parseDouble(args[3]);

            Receiver r = new Receiver(".");
            if (r.determine(a,b,c)=true)
            {
                    double root1=r.Root;
                    double root2=r.Root2;
                    System.out.println("The first root is +root1");
                    System.out.println("The second root is +root2");


            }
            else
            {
                    System.out.println("Not a number");
            }
    }
 }

今ここに私が呼ぼうとしているクラスがありますが、できませんでした。

   class Receiver
    {
    public boolean determine(double a, double b, double c)
    {
            double value=b*b-4*a*c;
                    if (value<0)
                            return false;
                    else
                            return true;
    }

    public double Root(double a, double b, double c)
    {
            double value=b*b-4*a*c;
            double root=(-b+ Math.sqrt(value))/(2*a);
            return root;
    }

    public double Root2(double a, double b, double c)
    {
            double value=b*b-4*a*c;
            double root2=(-b- Math.sqrt(value))/(2*a);
            return root2;
    }
    }

Receiver.java を既にコンパイルしていることを確認しました。しかし、Call.java をコンパイルすると、次のエラーが発生します。

Call.java:14:error:cannot find symbol
      Receiver r= new Receiver();
      symbol: class Receiver
      location: class Call
4

3 に答える 3

3

ReceiverString パラメーターを使用して s コンストラクターを呼び出していますが、Receiver投稿したコードにはそのようなコンストラクターはありません。

また、クラスを作成してみてくださいpublic

于 2012-07-01T07:27:48.877 に答える
2

私はコンストラクターを見つけていないことに注意してpublic Receiver(String arg)ください。あなたはそれをこのように使用していますが、それを見逃していませんか?

コマンドラインから自分でコンパイルする場合は、次の手順を実行してください。

それらのクラスでパッケージを作成します

// top of Call.java
package com.mypackage.app;

// top of Receiver.java
package com.mypackage.app;

これらのファイルをコンパイルして、パッケージがクラス構造で作成されるようにし
ます (これにより、現在の場所に のようなフォルダーが作成されます/com/mypackage/app/) 。

javac -d . Call.java Receiver.java

パッケージ名で現在の場所から Call クラスを実行します

java com.mypackage.app.Call
于 2012-07-01T07:35:29.943 に答える
0

両方のファイルを同時にコンパイルするか、コンパイラに Receiver クラス ファイルへの参照が渡されていることを確認する必要があります。また、レシーバーのコンストラクターは文字列パラメーターを取りません。

一般に、ソース ファイルをパッケージ (ディレクトリ) に配置することをお勧めします。これにより、プロジェクトが大きくなったときに整理しやすくなります。たとえば、「com.myapp.roots」のようなパッケージ名を選択し、両方のソース ファイルを「myFirstProject/src/com/myapp/roots」のようなディレクトリに置くことができます。次に、「myFirstProject」ディレクトリから「javac src」を呼び出して、ソースディレクトリ内のすべてをコンパイルできるはずです

http://docs.oracle.com/javase/1.4.2/docs/tooldocs/windows/javac.html

于 2012-07-01T07:33:11.567 に答える