void someMethod(E e) {
e.a(); // OK.
e.b(); // OK.
// e.c(); // Compiler error, E doesn't implement C.
}
现在,这是主要的...... ....
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;
}
}
如果我向门票ArrayList添加和项目,然后我打印出方法getDate,它会打印出3次日期。我尝试了一切,包括取出print语句并将其放在下一个}之外。当我休息时,它给了我一个死代码错误。
这个循环基本上做的是获取另一个名为ticket的列表,当getDate方法的布尔值为false时,它会以String的形式将日期添加到下一个ArrayList。每张票的日期打印3次。
更新
我添加了整个类以及主类。
getTickets方法是搜索日期的地方,并且ArrayList中满足该日期的票证数量将作为整数返回。
一旦我在主类上调用该方法,它会重复3次日期,并且它仍然不会在下一个方法中返回正确的整数。
答案 0 :(得分:2)
通常情况下,良好的缩进使问题更加清晰。
由于System.out.println
的循环位于另一个循环内,因此您会多次打印theDateArray
的内容。
假设tickets
中的所有故障单都没有购买,您每次都会向theDateArray
添加一个新元素;这样:
将此循环移到另一个循环之外:
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 + " ");
}
答案 1 :(得分:1)
你在第二个循环中使用了错误的int,而不是int我应该使用int f。就像评论中提到的其他人一样,你需要多个括号,在返回之前删除一个if和另一个,它应该没问题。试试这段代码:
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;
}
答案 2 :(得分:0)
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(i)+ " ");
}
}return theDateArray;
在for循环中if(tickets.get(i).getPurchased()== false);
之后有一个分号,这使得它成为无体,如果,并且后面的代码块将始终执行。可能是您的输入数据数据是循环运行3次,因此输出