[英]Method and Loop to check substring of Array List doesn't seem to be returning correct value in Java
[英]Java array list returning 0 value
我創建了一個這樣的類,如您所見,它包含一堆數組列表。 我一直在使用 add.. 方法設置數組,然后使用 get.. 檢索它,例如,當我嘗試 System.out.println numberofcitizen 時,它返回 0。請注意,我已經在另一個類中實例化了該類以設置值。
public int numberOfCitizen;
private final ArrayList<Integer> citizenid = new ArrayList<>();
private final ArrayList<String> citizenName = new ArrayList<>();
private final ArrayList<Integer> citizenWaste = new ArrayList<>();
private final ArrayList<Float> longitude = new ArrayList<>();
private final ArrayList<Float> latitude = new ArrayList<>();
private final ArrayList<String> address = new ArrayList<>();
public void working() {
System.out.println("executing fine");
}
public void setnoOfcit(int number) {
this.numberOfCitizen = number;
}
public int getnumber() {
return this.numberOfCitizen;
}
public void addCitizenId(int citizen) {
citizenid.add(citizen);
}
public int getCitizenid(int i) {
int citId = citizenid.get(i);
return citId;
}
public void addCitizenName(String citizenname) {
citizenName.add(citizenname);
}
public String getCitizenName(int i) {
return citizenName.get(i);
}
public void addCitizenWaste(int waste) {
citizenWaste.add(waste);
}
public int getCitizenWaste(int i) {
return citizenWaste.get(i);
}
public void addLatitude(float lat) {
latitude.add(lat);
}
public float getLat(int i) {
return latitude.get(i);
}
public void addlng(float lng) {
longitude.add(lng);
}
public float getlng(int i) {
return longitude.get(i);
}
com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.Builder vrpBuilder = com.graphhopper.jsprit.core.problem.VehicleRoutingProblem.Builder.newInstance();
public void runVPRSolver() {
System.out.println(numberOfCitizen);
System.out.println(getCitizenName(0));
//create a loop to fill parameters
numberOfCitizen
是一個您似乎永遠不會改變的成員屬性。 如果您希望它表示列表中的元素數量,請使用citizenName.size()
或在添加方法之一中增加numberOfCitizen
的值。
你的設計理所當然地認為你的另一個類總是正確地使用那個類。 無論何時您或某人使用該類,他都必須確保手動添加每個元素。 這添加了可以在您的類中分組的代碼,這將更清晰且更易於維護。
因此,而不是像這樣的幾個添加方法:
addCitizenid();
addCitizenName();
addCitizenWaste();
addLongitude();
addLatitude();
addAddress();
設計一個包含這些元素的其他Citizen
類,並使用該類的單個實例列表。 這樣你只能使用一種方法:
private List<Citizen> citizenList = new ArrayList<>();
public void addCitizen(Citizen c) {
/*Add element in your list*/
citizenList.add(c);
}
這種編程方法稱為“封裝” ,您可以在此處閱讀
您需要在添加方法中增加numberOfCitizen
。 例如:
public void addCitizenId(int citizen){
citizenid.add(citizen);
numberOfCitizen++;
}
我還建議將您的變量封裝到對象中,因此創建一個公民類:
public class Citizen {
private Integer id;
private Integer name;
private Integer waste;
}
並將您的變量更改為對象的 ArrayList:
ArrayList<Citizen> citizens;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.