gpt4 book ai didi

java - 初始化的ArrayList不显示

转载 作者:行者123 更新时间:2023-12-02 11:20:24 26 4
gpt4 key购买 nike

我有一个更大作业的代码。我省略了任何不必要的代码。问题是我被要求通过向 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com