2017-08-22 15 views
-1

私はアクセサとミューテータを作成するクラスを作成しています。しかし、クラスを使用するために私のプログラムを実行するとき、何も返されません、または私のプログラムは何も出力しません。Java(Eclipse)クラスのreturn文が機能しない

私はクラス変数を作成し、入力したクラスにそれらを送り、変数を返しました。

私の理想的な出力は、関数呼び出しが変数を返すことです。ここでは例えば (getLatitudeだろう出力緯度変数)

は私のクラスのコードは次のとおりです。ここで

package practiceProblems; 

import stdlib.StdOut; 

public class GPSPosition implements Comparable <GPSPosition> { 

    // Private global variables 
    private Double Latitude; 
    private Double Longitude; 
    private Double Altitude; 

    // Constructor 1 
    public <Item extends Comparable<? super Item>> GPSPosition() { 
     Latitude = 0.0; 
     Longitude = 0.0; 
    } 

    // Constructor 2 
    public <Item extends Comparable<? super Item>> GPSPosition (Double lat, Double lon, Double alt) { 
     this.Altitude = alt; 
     this.Latitude = lat; 
     this.Longitude = lon; 

     if (lat < -90 || lat > 90) { 
      throw new IllegalArgumentException ("NOPE!"); 
     } 

     if (lon < -180 || lon > 180) { 
      throw new IllegalArgumentException ("NOPE!!"); 
     } 

     if (alt < 0) { 
      throw new IllegalArgumentException ("NOPE!!!"); 
     } 
    } 

    // Latitude Accessor 
    public Double getLatitude() { 
     return this.Latitude; 
    } 

    // Longitude Accessor 
    public Double getLongitute() { 
     return this.Longitude; 
    } 

    // Altitude Accessor 
    public Double getAltutude() { 
     return this.Altitude; 
    } 

    // Mutator for Latitude 
    public void setLatitude (Double Latitude) { 
     this.Latitude = Latitude; 
    } 

    // Mutator for Longitude 
    public void setLongitude (Double Longitude) { 
     this.Longitude = Longitude; 
    } 

    // Mutator for Altitude 
    public void setAltitude (Double Altitude) { 
     this.Altitude = Altitude; 
    } 

    // Compare to method 
    public int compareTo (GPSPosition that) { 
     if (this.Latitude.compareTo (that.Latitude) > 0) { 
      return 1; 
     } 

     if (this.Latitude.compareTo (that.Latitude) < 0) { 
      return -1; 
     } 

     return that.Latitude.compareTo (this.Latitude); 
    } 

    // toString method 
    public String toString() { 
     String latOutput = ""; 
     String longOutput = ""; 

     if (this.Latitude < 0) { 
      latOutput = "S"; 
     } else { 
      latOutput = "N"; 
     } 

     if (this.Longitude < 0) { 
      latOutput = "W"; 
     } else { 
      latOutput = "E"; 
     } 

     return (this.Latitude + latOutput + " " + this.Longitude + longOutput + " " + this.Altitude + "m"); 
    } 

    public double distance (GPSPosition that) { 
     return (Math.sqrt ((this.Latitude - this.Longitude) + (that.Longitude - that.Latitude))); 
    } 
} 

は私のテストプログラムです:

package practiceProblems; 

import practiceProblems.GPSPosition; 

public class TestGPS { 

    public static void main (String[] args) { 

     // Positions 
     GPSPosition position = new GPSPosition (-37.2, 87.2, 200.0); 
     GPSPosition position2 = new GPSPosition (37.2, 7.2, 100.0); 

     // Set 
     position.setAltitude (200.0); 
     position.setLatitude (-37.2); 
     position.setLongitude (87.2); 

     // Get 
     position.getAltutude(); 
     position.getLatitude(); 
     position.getLongitute(); 

     // Compare to 
     position.compareTo (position2); 

     // To String call 
     position.toString(); 

     // Distance between two positions 
     position.distance (position2); 
    } 
} 
+0

期待している出力は何ですか? –

+0

すべてのリターンステートメントは? – Andrew

+0

しかし、 'string positionStr = position.toString();'のように変数を宣言する必要があります。 –

答えて

1

私のようなものを提案します主な方法では次のようになります。

public class TestGPS { 

    public static void main(String[] args) { 
     // Positions 
     GPSPosition position = new GPSPosition(-37.2, 87.2, 200.0); 
     GPSPosition position2 = new GPSPosition(37.2, 7.2, 100.0); 

     // Set 
     position.setAltitude(200.0); position.setLatitude(-37.2); 
     position.setLongitude(87.2); 

     // Get 
     System.out.println("Altitude: " + position.getAltutude()); 
     System.out.println("Latitude: " + position.getLatitude()); 
     System.out.println("Longitude: " + position.getLongitute()); 

     // Compare to 
     System.out.println("Comparison: " + position.compareTo(position2)); 

     // To String call 
     System.out.println("Position: " + position.toString()); 

     // Distance between two positions 
     System.out.println("Distance: " + position.distance(position2)); 

    } 

ただし、距離メソッドは数値を返さないことに注意してください。NaNは「Not a Number」の略です。

+0

これは非常に意味があります。私はそれを試して、それは働いた! しかし、実際に返信文が正確に何をするのか混乱していると思います。だから私はなぜそれが印刷されているか分からなかった。 – Andrew

+1

returnステートメントは、 "return"に引数があるかどうかに応じて、値がないか、または値のいずれかを呼び出しコードに戻すために使用しています。引数がある場合、その値は呼び出し元に返されます。これは役立ちます:https://docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.html – Charles

+0

ありがとうございました! あなたが気にしていないなら最後に1つ:私の遠隔メソッドが私にNaNを与えようとしていることをどうやって知ったのですか? \t \t \t戻り距離; ' - this.Longitude)+(that.Longitude - that.Latitude)) ( '二重距離= Math.sqrt((this.Latitude: は少しコードを変更しました) – Andrew

関連する問題