繁体   English   中英

从类中获取变量

[英]Getting a variable from a class

所以我有一个叫做Buildings的类,它创建7个建筑对象并将它们添加到building类型的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中),我有一个for循环,它创建对象构建并循环遍历每个对象,并将它们与用户输入进行比较。 我已进行测试,以确保该程序确实正在获得用户输入。 但是,字符串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);
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());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM