java - 初始化的ArrayList不显示

标签 java arraylist

我有一个更大作业的代码。我省略了任何不必要的代码。问题是我被要求通过向 ArrayList 添加对象来初始化它。然而,当我输入 3(显示建筑物的选项)时,除了菜单之外什么也没有显示。任何帮助将不胜感激!

附注我不要求你解决我的作业。 我们在我大学的实验室中做过类似的较小案例。但是,由于某种原因我无法让它工作,而且我也找不到原因。

import java.util.*;

public class mainApp {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        BuildingList myBList = new BuildingList();
        ExpenseList myExpList = new ExpenseList();
        BuildingExpenseList myExpTList = new BuildingExpenseList();
        boolean done = false;

        while (!done)
        {
            System.out.println("\n1. Insert new building");
            System.out.println("2. Insert new expense");
            System.out.println("3. Show all buildings");
            System.out.println("4. Show the expenses for a building");
            System.out.println("5. Calculate the cost for a building");
            System.out.println("6. Calculate the cost of an expense");
            System.out.println("0. Exit");
            System.out.print("> ");
            answer = in.nextLine();

            if (answer.equals("3"))
            {
            myBList.showBuilds();
            }
            else if (answer.equals("0")) done = true;
       }

       Building b1 = new Building("1", "Offices", "5th Avenue", 130, 340);
       Building b2 = new Building("2", "Shop", "St. John", 100, 200);
       Building b3 = new Building("3", "Fire Station", "Weston Road", 250, 550);
       Building b4 = new Building("4", "Police Station", "Two Bridges Road", 700, 1000);
       Building b5 = new Building("5", "Restaurant", "St Nicholas Avenue", 400, 600);

       myBList.addBuilding(b1);
       myBList.addBuilding(b2);
       myBList.addBuilding(b3);
       myBList.addBuilding(b4);
       myBList.addBuilding(b5);
  }
}

import java.util.ArrayList;

public class BuildingList
{
    ArrayList<Building> Buildings = new ArrayList<Building>();

    public void addBuilding(Building b)
    {
        Buildings.add(b);
    }
    public void showBuilds()
    {
        for (Building b : Buildings)
        {
        System.out.println(b.printBuilding());
        }
    }
}

public class Building
{
    String code;
    String description;
    String address;
    float areaPrice;
    float sqM;

    public Building (String code, String description, String address, float areaPrice, float sqM)
    {
    this.code = code;
    this.description = description;
    this.address = address;
    this.areaPrice = areaPrice;
    this.sqM = sqM;
    }
    public String printBuilding()
    {
        return "Code " +code+ "\t Description " +description+ "\t Address " +address+ "\t Area Price ";
    }

最佳答案

问题是当您按“3”时,列表永远不会被填满:

这段代码:

   Building b1 = new Building("1", "Offices", "5th Avenue", 130, 340);
   Building b2 = new Building("2", "Shop", "St. John", 100, 200);
   Building b3 = new Building("3", "Fire Station", "Weston Road", 250, 550);
   Building b4 = new Building("4", "Police Station", "Two Bridges Road", 700, 1000);
   Building b5 = new Building("5", "Restaurant", "St Nicholas Avenue", 400, 600);

   myBList.addBuilding(b1);
   myBList.addBuilding(b2);
   myBList.addBuilding(b3);
   myBList.addBuilding(b4);
   myBList.addBuilding(b5);

必须在while循环之前实现。

此外,尝试像这样实现您的构建器类,在对象构造函数中构造 ArrayList。

public class BuildingList
{
    List<Building> Buildings;

    public BuildingList() {
        Buildings = new ArrayList<Building>();
    }

    public void addBuilding(Building b)
    {
        Buildings.add(b);
    }
    public void showBuilds()
    {
        for (Building b : Buildings)
        {
            System.out.println(b.printBuilding());
        }
    }
}

如果你想让你的教授看起来很酷,你可以对 ArrayList.toString() 方法进行子字符串化,删除逗号并将其替换为新行字符“\n”。您可以在一次 System.out.println() 调用中完成此操作,而不是循环

关于java - 初始化的ArrayList不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49961926/

相关文章:

java run 方法对 arraylist 的每个元素进行操作

java - 项目没有添加到我的 ArrayList 中或者没有显示

Java:HttpComponents 从特定 URL 的输入流获取垃圾响应

java - 在 arrayadapter 中显示 arraylist<hashmap> 的值以进行自动完成

java - 为什么 Angular HttpClient 响应为空?

Java 和 jdbc - exe 可运行文件

Java 与 ArrayList 的多项式乘法

java - 将对象的数组列表保存到外部文件 Java

java - 关闭 CallableStatement

c# - 在 C++ 或 Java 应用程序中嵌入 Flash Player?