物体没有填满

时间:2014-03-10 00:08:31

标签: java object return

我正在尝试填充对象Pos Pos类:

private int degree, minute, tenth;
private Pos pos;
private int d;
private int m;
private int t;

public Pos(int d, int m, int t){
    this.d = degree;
    this.m = minute;
    this.t = tenth;

}

@Override
public String toString(){
    return (this.degree + " " + this.minute + "." + this.tenth);
}

这是我打印对象的类(它非常多,但我有它来检查布局:

 In in;
    String fileName = "charts.txt";
    int aantalKaarten;
    int kolommen;
    String[][] tabel;
    int n1,n2,n3,s1,s2,s3,w1,w2,w3,e1,e2,e3;
    String color;
    String edition;
    String scale;
    String title;

    in = new In(fileName);
    aantalKaarten = in.readInt()+1;
    for(int i = 0, kaart = 0;i < aantalKaarten;i++, kaart++){
        try {
            n1 = in.readInt();
            n2 = in.readInt();
            n3 = in.readInt();
            System.out.println("Noordelijke lengtegraad: " + n1 + ", " + n2 + ", " + n3);
            s1 = in.readInt();
            s2 = in.readInt();
            s3 = in.readInt();
            System.out.println("Zuidelijke lengtegraad: " + s1 + ", " + s2 + ", " + s3);
            w1 = in.readInt();
            w2 = in.readInt();
            w3 = in.readInt();
            System.out.println("westelijke breedtegraad: " + w1 + ", " + w2 + ", " + w3);
            e1 = in.readInt();
            e2 = in.readInt();
            e3 = in.readInt();
            System.out.println("oostelijke breedtegraad: " + e1 + ", " + e2 + ", " + e3);
            color = in.readString();
            System.out.println("De kleur van de kaart: " + color);
            edition = in.readString();
            System.out.println("Editie: " + edition);
            scale = in.readString();
            System.out.println("Schaal: " + scale);
            title = in.readLine();
            System.out.println("Kaart: " + title);
            System.out.println("");
            Pos north = new Pos(n1,n2,3);
            Pos south = new Pos(s1,s2,s3);
            Pos west = new Pos(w1,w2,w3);
            Pos east = new Pos(e1,e2,e3);
            Chart[] kaartenArray = new Chart[aantalKaarten];
            Chart charts = new Chart(north, south, west, east, color, scale, edition, title);
            kaartenArray[kaart] = charts;
            String string1;
            string1 = kaartenArray[kaart].toString();
            System.out.println("string1: " +string1);
            System.out.println(kaart);
            System.out.println("");

        }
        /*catch(NoSuchElementException eNSEE){
            System.out.println("No such element exception: " + eNSEE);
        }*/
        catch(StackOverflowError eSOE){
            System.out.println("StackOverflowError: " + eSOE);
        }
        catch(NullPointerException eNPE){
            System.out.println("NullpointerException" + eNPE);
        }

    }
    in.close();


}

}

这是类图表中的构造函数:

 private String title;//Titel van de kaart.
private String colorString;//kleur waarin het kader van de kaart moet worden getekend door de klasse
                           //DrawCartotheek (B,G) voor respectievelijk blauw of groen
private String scale;//Schaal van de kaart: Bij voorbeeld: 1:50000
private String edition;///Het jaar van uitgifte van de kaart. Bij voorbeeld: ed:2011/2012
private Pos north;//De noordelijkste breedtegraad van de kaart
private Pos south;//De zuidelijkste breedtegraad van de kaart
private Pos west;//De westelijkste lengtegraad van de kaart
private Pos east;//De oostelijkste lengtegraad van de kaart

private Chart Chart;

public Chart(Pos north, Pos south, Pos west, Pos east, String color, String scale, String edition, String title){
    //Constructor. Maakt een object van het type Chart wijst de parameters
    //toe aan de respectievelijke attributen.
    this.north = north;
    this.south = south;
    this.west = west;
    this.east = east;
    this.colorString = color;
    this.scale = scale;
    this.edition = edition;
    this.title = title;
}

这是我正在处理的文本文件:

 20
 51 53 00 3 49 00 51 49 70 3 59 00 B ed:2011/2012 1:50.000 ANWB Z 5
 51 53 00 3 59 00 51 49 70 4 09 15 B ed:2011/2012 1:50.000 ANWB Z 6
 51 49 50 3 28 90 51 42 10 3 49 00 B ed:2011/2012 1:50.000 ANWB Z 7-8
 51 49 50 3 49 00 51 42 10 4 09 00 B ed:2011/2012 1:50.000 ANWB Z 9-10
 51 41 80 3 19 20 51 34 00 3 39 60 B ed:2011/2012 1:50.000 ANWB Z 11-12
 51 42 20 3 39 40 51 34 40 3 59 70 B ed:2011/2012 1:50.000 ANWB Z 13-14
 51 42 40 3 59 70 51 34 60 4 19 80 B ed:2011/2012 1:50.000 ANWB Z 15-16
 51 42 60 4 19 60 51 34 80 4 29 80 B ed:2011/2012 1:50.000 ANWB Z 17
 51 34 20 3 19 80 51 26 80 3 39 90 B ed:2011/2012 1:50.000 ANWB Z 19-20
 51 34 60 3 39 80 51 26 80 4 00 00 B ed:2011/2012 1:50.000 ANWB Z 21-22
 51 34 60 3 59 70 51 27 20 4 20 00 B ed:2011/2012 1:50.000 ANWB Z 23-24
 51 26 70 3 20 00 51 19 00 3 40 20 B ed:2011/2012 1:50.000 ANWB Z 25-26
 51 27 00 3 40 00 51 19 40 4 00 00 B ed:2011/2012 1:50.000 ANWB Z 27-28
 51 27 15 4 00 00 51 19 60 4 20 20 B ed:2011/2012 1:50.000 ANWB Z 29-30
 51 27 60 2 28 60 51 00 00 2 58 40 G ed:2012      1:100.000 Hydro 1801.2
 51 32 00 2 51 60 51 13 70 3 36 00 G ed:2012      1:100.000 Hydro 1801.3
 51 30 50 3 22 50 51 20 50 3 44 30 G ed:2012      1:50.000  Hydro 1801.4
 51 48 60 3 00 00 51 30 40 3 40 00 G ed:2012      1:100.000 Hydro 1801.5
 52 00 06 3 23 00 51 42 40 4 07 20 G ed:2012      1:100.000 Hydro 1801.6
 52 15 60 3 46 40 51 57 60 4 29 60 G ed:2012      1:100.000 Hydro 1801.7

这是我运行te类时代码的结果(只有前两个,因为它太长了:

 run:
 Noordelijke lengtegraad: 51, 53, 0
 Zuidelijke lengtegraad: 3, 49, 0
 westelijke breedtegraad: 51, 49, 70
 oostelijke breedtegraad: 3, 59, 0
 De kleur van de kaart: B
 Editie: ed:2011/2012
 Schaal: 1:50.000
 Kaart:  ANWB Z 5

 Chart:  ANWB Z 5, ed:2011/2012, 1:50.000 north: 0 0.0 south: 0 0.0 west: 0 0.0 east: 0 0.0

 Noordelijke lengtegraad: 51, 53, 0
 Zuidelijke lengtegraad: 3, 59, 0
 westelijke breedtegraad: 51, 49, 70
 oostelijke breedtegraad: 4, 9, 15
 De kleur van de kaart: B
 Editie: ed:2011/2012
 Schaal: 1:50.000
 Kaart:  ANWB Z 6

 Chart:  ANWB Z 6, ed:2011/2012, 1:50.000 north: 0 0.0 south: 0 0.0 west: 0 0.0 east: 0 0.0

正如你所看到的那样,pos对象的结果都是0.它输出这种格式:你可以在Pos类中看到的度数minute.tenth。例如,北方应该是51 53.0,依此类推。

真的希望有人可以帮我找到我做错了什么。提前谢谢。

1 个答案:

答案 0 :(得分:2)

如果我正确理解了问题,那么:

public Pos(int d, int m, int t){
    this.d = degree;
    this.m = minute;
    this.t = tenth;
}

应该是:

public Pos(int d, int m, int t){
    this.d = d;
    this.m = m;
    this.t = t;
}

toString应该是:

@Override
public String toString(){
    return (this.d + " " + this.m + "." + this.t);
}