2017-03-31 90 views
0

所以我有一類稱爲建築它創建7點的對象,並將它們添加到建築類型的ArrayList:從類中獲取變量

package model; 

import java.util.ArrayList; 

/** 
* 
* @author dominic 
*/ 
public class Buildings { 
    private ArrayList<Building> buildingList = new ArrayList<Building>(); 


    public ArrayList<Building> getBuildingList() { 
     return buildingList; 
    } 

    public void setBuildingList(ArrayList<Building> buildingList) { 
     this.buildingList = buildingList; 
    } 

    public Buildings(){ 
     Building building1 = new Building("Kingston University","Penrhyn Road","KT1 2EE"); 
     buildingList.add(building1); 
      Building building2 = new Building("Guild of Students","Penrhyn Road","KT1 2EE"); 
     buildingList.add(building2); 
      Building building3 = new Building("Kingston University Health Centre","Penrhyn Road","KT1 2EE"); 
     buildingList.add(building3); 
      Building building4 = new Building("Knights Park Centre","Grange Road","KT1 2QJ"); 
     buildingList.add(building4); 
      Building building5 = new Building("Roehampton Vale","Friars Avenue","SW15 5DW"); 
     buildingList.add(building5); 
      Building building6 = new Building("Kingston Law School","Kingston Hill","KT2 7LB"); 
     buildingList.add(building6); 
      Building building7 = new Building("Kingston Business School","Kingston Hill","KT2 7LB"); 
     buildingList.add(building7); 
    } 


} 

建築類看起來像這樣在裏面:

package model; 

/* 
* To change this license header, choose License Headers in Project Properties. 
* To change this template file, choose Tools | Templates 
* and open the template in the editor. 
*/ 

/** 
* 
* @author dominic 
*/ 
public class Building { 
    private String buildingName; 
    private String streetName; 
    private String postcode; 

    public Building(String buildingName, String streetName, String postcode){ 
    this.buildingName = buildingName; 
    this.streetName = streetName; 
    this.postcode = postcode; 
    } 
    public String getBuildingName() { 
     return buildingName; 
    } 

    public void setBuildingName(String buildingName) { 
     this.buildingName = buildingName; 
    } 

    public String getStreetName() { 
     return streetName; 
    } 

    public void setStreetName(String streetName) { 
     this.streetName = streetName; 
    } 

    public String getPostcode() { 
     return postcode; 
    } 

    public void setPostcode(String postcode) { 
     this.postcode = postcode; 
    } 

} 

而我在我的項目中的其他地方(在一個servlet中)創建對象建築物並循環遍歷每個對象並將它們與用戶輸入進行比較。我已經測試過,以確保該程序實際上獲取用戶輸入,它是。但是,字符串streetName和postCode仍爲空。謝謝。

HttpSession session = request.getSession(); 
    Integer id = (Integer)session.getAttribute("id"); 
    Buildings buildings = new Buildings(); 
     String streetName = ""; 
    String postCode = ""; 
    String postCodeInput = request.getParameter("postCodeInput"); 
    for(int i = 0; i > 6; i++) 
    { 


     if (postCodeInput == buildings.getBuildingList().get(i).getPostcode()) 
     { 
      streetName = buildings.getBuildingList().get(i).getStreetName(); 
      postCode = buildings.getBuildingList().get(i).getPostcode(); 

     } 


    } 

      request.setAttribute("streetName", streetName); 
    request.setAttribute("postCode", postCode);  
      request.setAttribute("postCodeInput", postCodeInput); 
    request.getRequestDispatcher("StreetNameView.jsp").forward(request, response); 

回答

1
for(int i = 0; i > 6; i++) 

這應該是<

for(int i = 0; i < 6; i++) 

更好的是,直接迭代列表項而不是索引。

for (Building building: buildings.getBuildingList()) 
{ 
    if (postCodeInput == building.getPostcode()) 
    { 
     streetName = building.getStreetName(); 
     postCode = building.getPostcode(); 

     break; 
    } 
} 

您甚至可以使用Java 8流進行匹配。

Building building = buildings.getBuildingList().stream() 
    .filter(b -> b.getPostcode() == postCodeInput) 
    .findAny() 
    .orElseThrow(NoSuchElementException::new); 

request.setAttribute("streetName", building.getStreetName()); 
request.setAttribute("postCode", building.getPostcode()); 
+0

謝謝你發現我的愚蠢的錯誤。問題是當我嘗試從java servlet發佈這個到一個jsp時,引用變量「$ {streetName}」不會打印出任何東西。 – Aueisbiejei3i939