我构建了一个简单的项目类;
class itemInfo{
int auctionID;
int startPrice;
int buyoutPrice;
}
我已经创建了一个 ArrayList;
ArrayList<itemInfo> itemSet = new ArrayList<itemInfo>();
我这里还有一个允许用户创建项目的方法(该方法不完整,到目前为止我只尝试实现 choice == 1!);
public void auctionChoice(){
System.out.println("---- What would you like to do? ----\n");
System.out.println("1: List an item for auction\n");
System.out.println("2: Bid on an existing item\n");
System.out.println("3: Remove an item from the auction\n");
if(scanner.next().equals("1")){
itemInfo createdItem = new itemInfo();
System.out.println("----Enter the auctionID----");
createdItem.auctionID = scanner.nextInt();
System.out.println("----Enter the item startPrice----");
createdItem.startPrice = scanner.nextInt();
System.out.println("----Enter the buyoutPrice----");
createdItem.buyoutPrice = scanner.nextInt();
System.out.println("Auction ID:" +createdItem.auctionID+ "\nstartPrice:" +createdItem.startPrice+ "\nbuyoutPrice:" +createdItem.buyoutPrice);
itemSet.add(createdItem);
}
}
我所坚持的是构建一个允许用户查看当前元素拍卖列表的方法,基本上是一种打印出 itemSet ArrayList 的方法。
我研究过使用 toString(),但不确定如何让它返回多个值,即 auctionID、startPrice、buyoutPrice。
理想情况下,我希望用户选择“查看当前拍卖”等选项,然后选择以“拍卖 ID:**** 起拍价:**** 买断”等格式打印整个 ArrayList 的方法Price: ****”,显然 **** 是用户输入的数字。
最佳答案
作为 ItemSet,是 itemInfo 对象的 ArrayList,您可以像这样遍历它们:
for(itemInfo info : itemSet){
System.out.println(info.actionID);
System.out.println(info.auctionPrice);
System.out.println(info.buyoutPrice);
}
这会将它们全部打印出来。 或许,当您包含 ID 时,您可以要求用户接下来输入 ID,然后您可以从数组列表中检索该 ID。您可以通过遍历它们并将它们的 ID 与用户输入的 ID 进行比较来完成此操作。 例如:
// get the ID
int auctionId = scanner.nextInt();
itemInfo selectedInfo;
// find that item
for(itemInfo info : itemSet){
if(info.auctionId = auctionId){
selectedInfo = info;
break;
}
}
if(selectedInfo == null){
// the ID was not valid!
// do something to handle this case.
} else {
System.out.println(selectedInfo.auctionID);
System.out.println(selectedInfo.auctionPrice);
System.out.println(selectedInfo.buyoutPrice);
}
在你学习的过程中,这里有一些东西可以让你的代码更好一些:
1-类名应该以大写开头,你应该把itemInfo改成ItemInfo。
2- 您通常应该使用 getter 和 setter,因此您应该使用 selectedInfo.getAuctionId()
和 selectedInfo.setAuctionId 而不是使用
selectedInfo.auctionID
(x);
3- 您可能应该考虑使用开关而不是 if(scanner.next().equals("1"))。另外,如果你最终写了 else if(scanner.next().equals("2")) 那么你会遇到问题,因为每次调用 scanner.next() 时,它都需要输入,因此它会期望输入每个if。相反,您应该在开关外部使用 scanner.next(),然后使用读入的值。例如:
int menuSelection = scanner.nextInt();
switch(menuSelection){
case 1:
// do your stuff
break;
case 2:
// do something else
break;
default:
// handle any input which isn't a menu option
}
4- 最后,您可能应该将处理每个菜单选项的功能拆分为单独的方法。如果你把它全部放入这个方法中,它会很快变得非常大和丑陋(难以维护)。
关于Java 数组列表/RMI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26806589/