gpt4 book ai didi

java - 为什么这个循环打印了3次底线?

转载 作者:行者123 更新时间:2023-12-01 20:27:21 25 4
gpt4 key购买 nike

    import java.util.ArrayList;
import java.util.Collections;

public class AmusementPark {
private ArrayList<Ticket> tickets;
private ArrayList<Merchandise> merchandise;
private String name;
AmusementPark(String name){
this.name=name;
this.tickets = new ArrayList<Ticket>();
this.merchandise= new ArrayList<Merchandise>();
}
void addTicket(long num, String cat, String h, String dt, double pr, boolean pch){
Ticket test = new Ticket(num, cat, h, dt, pr, pch);
tickets.add(test);
}

String getName(){
return name;



}
public ArrayList<String> getTicketDates(){
ArrayList<String> theDateArray= new ArrayList<>();
int i;

for (i=0; i <tickets.size(); i++){
if(tickets .get(i).getPurchased()== false){
theDateArray.add(tickets.get(i).getDate());
}
}
for(int f=0; f<theDateArray.size();f++){
System.out.println(theDateArray.get(f)+ " ");
}
return theDateArray;
}



public int getTickets(String date){
int tix= getTicketDates().indexOf(date);
int occurances= Collections.frequency(getTicketDates(), tix);
if (tix>=0){
System.out.println(occurances);


}
return occurances;
}
}

现在,这是主类......

public class AmusementParkTester {

public static void main(String[] args) {


AmusementPark park1= new AmusementPark("Walden University Park");

park1.addTicket(777, "Child", "Noah Johnson","2017-06-09" , 27.99, false);

System.out.println("The dates in which tickets are available are as follows: ");
park1.getTicketDates();

park1.getTickets("2017-06-09");

}



}

如果我将 item 添加到门票 ArrayList 中,然后打印出 getDate 方法,它会打印出日期 3 次。我尝试了一切,包括取出打印语句并将其放在下一个 } 之外。当我插入中断时,它会给我一个死代码错误。

这个循环的主要作用是获取另一个名为 Tickets 的列表,当 getDate 方法的 boolean 值为 false 时,它​​将以字符串形式的日期添加到下一个 ArrayList 中。不过,每张票的日期都会打印 3 次。

更新

我将整个类以及主类添加到其中。

getTickets 方法用于搜索日期,并以整数形式返回 ArrayList 中满足该日期的门票数量。

一旦我在主类上调用该方法,它就会重复日期 3 次,并且在下一个方法中仍然没有返回正确的整数。

最佳答案

通常情况下,良好的缩进可以使问题更加清晰。

由于带有 System.out.println 的循环位于另一个循环内,因此您会多次打印 theDateArray 的内容。

假设 tickets 中的所有门票均未购买,则每次都向 theDateArray 添加一个新元素;所以:

  1. 在第一次迭代中打印 1 个元素
  2. 在第二次迭代中,您打印 1 + 1 个元素
  3. 在第三次迭代中,您打印 1 + 1 + 1 个元素...

将此循环移到另一个循环之外:

for (i=0; i <tickets.size(); i++){
if(tickets .get(i).getPurchased()== false){
theDateArray.add(tickets.get(i).getDate());
}
}
for(int f=0; f<theDateArray.size();f++){
System.out.println(theDateArray.get(f)+ " ");
}

另外,请注意,增强的 for 循环使这变得更加清晰:

for (Ticket t : tickets) {
if (!t.getPurchased()) {
theDateArray.add(t.getDate());
}
}
for (String date : theDateArray) {
System.out.println(date + " ");
}

关于java - 为什么这个循环打印了3次底线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43674615/

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