0

このメソッドは、String、double、および String の 3 つの引数を受け入れることになっています。そして、メインメソッドで出力される値を返します。どうすればいいですか?これが私がしたことです

    import javax.swing.JOptionPane;
    import javax.swing.JTextArea;

    public class coordinates
    {
        public static void main(String args[])
        {   
            double angle=0, az = 0;
            JOptionPane.showMessageDialog(null, "Hello, this is the 'Bearing to Azimuth' converter.\nFirst, you must input whether the angle is from the North or from the South, input the angle, and then input whether it is East or West.", "Bearing to Azimuth converter", JOptionPane.PLAIN_MESSAGE);
            String ns = JOptionPane.showInputDialog("Input n for North and s for South:");
            String inputangle = JOptionPane.showInputDialog("Input the angle in decimal format:");
            angle = Double.parseDouble(inputangle);
            String ew = JOptionPane.showInputDialog("Input e for East and w for West:");

            convertToSouthAzimuth(ns, angle, ew);


            JOptionPane.showMessageDialog(null, "The converted azimuth is " + az, "Bearing to Azimuth converter", JOptionPane.PLAIN_MESSAGE);
    } //end main method



        public double convertToSouthAzimuth(String ns, double angle, String ew)
        {
            double az = 0;
            if (ns.equals("n")||ns.equals("N")) {
                if (ew.equals("e")||ew.equals("E")) {az= 180+angle;}
                if(ew.equals("w")|| ew.equals("W")){az= 180-angle;}
            }
            if (ns.equals("s")||ns.equals("S")) {
                if (ew.equals("e")||ew.equals("E")) {az= 360-angle;}
                if (ew.equals("w")||ew.equals("W")) {az= angle;}
            }
            return az;
        } //end convertToSouthAzimuth method
    }
4

5 に答える 5

6

convertToSouthAzimuthメソッドはとして宣言されていないためstatic、コンパイラはそのクラスのインスタンスで呼び出されることを想定しています。ただし、mainメソッド静的であるため、そのクラスのインスタンスは使用できません。

渡されたパラメーターでのみ機能し、現在のインスタンスとは関係がない場合convertToSouthAzimuthは、静的メソッドに変更できます。

public static double convertToSouthAzimuth(...) {
于 2013-01-02T13:34:21.590 に答える
1

これを変える:

public double convertToSouthAzimuth(...) { }

public static double convertToSouthAzimuth(...) {}

mainは静的メソッドであり、その中の非静的メソッドを呼び出すことはできないためです。

于 2013-01-02T13:34:16.017 に答える
1

それ自体が静的メソッドである-methodからキーワードを参照しているstaticため、メソッドにキーワードを追加する必要があります。convertToSouthAzimuth()main()

これを静的なものとして参照したくない場合は、新しいクラスに含めることで回避できます。

私は意図的に、新しいクラスのコンストラクターを省略しました。

このようなもの:

public class AzimuthConverter {

   public double convertToSouthAzimuth(String s, Double d, String s){
       return someValue;
   }
}

そしてします

AzimuthConverter myConverter = new AzimuthConverter()

とフォローアップ

double myResult = myConverter.convertToSouthAzimuth(value);

于 2013-01-02T13:34:39.770 に答える
1

静的メソッドはクラスに属しますが、非静的メソッドはクラスインスタンスに属します。

したがって、あなたは次のようなことをする必要があります

...
new coordinates().convertToSouthAzimuth(ns, angle, ew);
...

または、convertToSouthAzimuth(...)メソッドを静的にするだけです。これは、この特定のケースではおそらくより良いオプションです。これは、クラスに関係がないためですcoordinates(@limelightsが別のクラスで示唆しているように、ヘルパークラスに移動することもできます)。答え)。

乾杯、

于 2013-01-02T13:35:03.150 に答える
0

他の人があなたのエラーについてすでに答えているので、コードの別の機能強化を指摘したいと思います。代わりにString.equalIgonreCase(String)を使用できます

        if (ns.equals("n")||ns.equals("N")) {

することができます

        if (ns.equalIgonreCase("n")) {
于 2013-01-02T13:57:52.637 に答える