2014-04-22 77 views
-1

所以我在那里创建一个用户进入KM的一个记录程序,并将它保存它等将数据添加到ArrayList中的Java

我参加四个变量 - 启动KM,KM结束,开始和结束位置。我是新来的java,所以我只是想知道是否有人可以确认是否有更好的方法来做到这一点。这是我的代码到目前为止,我想将它保存到一个数组(对列表??),所以我可以访问每个对象,即startKM,但他们需要在同一行,如在数组的对象1等,然后写入文件,

我正在考虑做的是将该链接列表保存到一个文件,并添加一个;在toString方法中以及在读取文件时只需将其打破;有一个更好的方法吗??多谢你们。数据是从用户输入文本字段中分配的。

double startKM; 
double endKM; 
String startLocation; 
String endLocation; 


startKM = Double.parseDouble(txtStartKM.getText()); 
endKM = Double.parseDouble(txtEndKM.getText()); 

startLocation = txtStartLocation.getText(); 
endLocation = txtEndLocation.getText(); 

details.startKM = startKM; 
details.endKM = endKM; 
details.startLocation = startLocation; 
details.endLocation = endLocation; 

//List<DrivingDetails> detailsList = new ArrayList<DrivingDetails>(); 
List detailsList = new ArrayList(); 

detailsList.add(details); 

System.out.println("LinkedList contains = \t " + detailsList.toString()); 

编辑:我有另一个类(DrivingDetails)持有下列变量:

public class DrivingDetails { 

    double startKM; 
    double endKM; 
    String startLocation; 
    String endLocation; 
} 
+2

不应公开访问详细成员变量。你应该使用setter和getters来修改和检索它们,并且它们应该对这个类是私有的。你能发布更多的代码吗?目前还不清楚我们在这里看到的是什么...... – jgitter

+0

增加了一些更多的代码,这就是我所有的 – Javanoob33

+0

您是否需要按startKM排序的列表?你想保存每个列表元素为一个;在文本文件中分隔线? –

回答

1

你DrivingDetails类违反了封装面向对象类的原则。我会为所有属性添加setter和getters。此外,您可以创建一个为您处理初始化的配置文件。然后

public class DrivingDetails { 

    private double startKM; 
    private double endKM; 
    private String startLocation; 
    private String endLocation; 

    public DrivingDetails(double startKM, double endKM, String startLocation, String endLocation) { 
     this.startKM = startKM; 
     this.endKM = endKM; 
     this.startLocation = startLocation; 
     this.endLocation = endLocation; 
    } 

    public double getStartKM() { 
     return startKM; 
    } 
    public void setStartKM(double startKM) { 
     this.startKM = startKM; 
    } 

    // rest of the methods left for you ... 
} 

最后的代码将如下所示:

double startKM; 
double endKM; 
try { 
    startKM = Double.parseDouble(txtStartKM.getText()); 
    endKM = Double.parseDouble(txtEndKM.getText()); 
} catch (NumberFormatException e | NullPointerException e) { 
    // the line above assumes java 7 
    // recover 
} 

DrivingDetails details = new DrivingDetails(startKM, endKM, 
     txtStartLocation.getText(), 
     txtEndLocation.getText()); 

List<DrivingDetails> detailsList = new ArrayList<DrivingDetails>(); 
detailsList.add(details); 

希望帮助!

+1

真棒很酷谢谢你清理!干杯 – Javanoob33

相关问题