如何从同一个类中的先前方法访问ArrayList?

时间:2017-04-28 15:31:02

标签: java arraylist methods

在这个项目中,我正在尝试从ArrayList访问信息,该列表只包含字符串的日期。

这是我尝试过的课程的一部分。如果没有全班让我很难理解,我可以编辑......

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= theDateArray.indexOf(date);
         int occurrences= Collections.frequency(theDateArray, tix);
         if (tix>=0){
             System.out.println(occurrences);


         }
         return occurrences;
     }

第二类,我试图计算一个特定日期在前一个ArrayList中出现的次数,但是它表示无法将theDateArray解析为变量。

我尝试过的一种方法就是调用整个方法getTicketDates(),但它的作用是打印出ArrayList三元组,并且这些事件仍然不起作用。

2 个答案:

答案 0 :(得分:1)

您的theDateArray变量范围是getTicketDates()方法的本地范围,因此您无法在其他方法中访问它,因此将其声明为实例变量,如下所示:

public class YourTicketsClass {

    //declare ArrayList as an instance variable
    ArrayList<String> theDateArray= new ArrayList<>();

    public ArrayList<String> getTicketDates(){
        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= theDateArray.indexOf(date);
         int occurrences= Collections.frequency(theDateArray, tix);
         if (tix>=0){
             System.out.println(occurrences);
         }
        return occurrences;
   }
}

答案 1 :(得分:0)

在方法之外定义数组列表,然后填充方法内的列表。像这样:

public class YourdataClass {
private List<String> theDateArray = new ArrayList<String>();

public ArrayList<String> getTicketDates(){
       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= theDateArray.indexOf(date);
     int occurrences= Collections.frequency(theDateArray, tix);
     if (tix>=0){
         System.out.println(occurrences);


     }
     return occurrences;
 }
}/* end class */

以下是一些参考资料。 http://www.javawithus.com/tutorial/scope-and-lifetime-of-variables https://en.wikibooks.org/wiki/Java_Programming/Scope