【问题标题】:Trying to write a method to create an array list试图写一个方法来创建一个数组列表
【发布时间】:2016-06-06 23:48:09
【问题描述】:

我正在使用 Netbeans/GUI 制作一个梦幻篮球游戏程序。我正在尝试创建创建数组列表的方法,这样我就可以在每次需要它用于我的一个按钮事件时调用数组的方法,而不是在每个单独的事件下重新编码数组。数组列表方法从我在设计窗口中创建的列表框中加载团队名称的数据。代码如下:

public class JFMarchMadness extends javax.swing.JFrame {

    public JFMarchMadness() 
    {
        initComponents();
    }

    //creates arraylist and loads up data from arraylist of type string (lstConfTeams)
    void createCTArrayList ()
    {
        ArrayList<BasketballTeam> alCTeams=new ArrayList <>();

        String CTteamName;
        String CTstatus="";
        int CTwins=0;
        int CTlosses=0;
        double CTwinLossPct=0;

        for (int iCount = 0; iCount <lstConfTeams.getModel().getSize(); iCount++)
        {
            CTteamName=lstConfTeams.getModel().getElementAt(iCount);
            alCTeams.add(new BasketballTeam(CTstatus,CTteamName,CTwins,CTlosses,CTwinLossPct));
        }

    }

    private void btnPlayMouseClicked(java.awt.event.MouseEvent evt) {                                     
    // call createCTArrayList method and begin for loop


        createCTArrayList ();

        int iCTCount;

        for (iCTCount=0; iCTCount<alCTeams.size; iCTCount++){
        //
        }
    }

现在,当我尝试在 for 循环语句中调用它时,它会出现找不到 arraylist: alCTeams 的错误。是我写错了方法还是调用错了?

【问题讨论】:

    标签: java user-interface arraylist methods listbox


    【解决方案1】:

    alCTeams 的声明应位于class 而非method 下。

    像这样:

    public class JFMarchMadness extends javax.swing.JFrame {
    
    ArrayList<BasketballTeam> alCTeams=new ArrayList <>();
    
    public JFMarchMadness() 
    {
        initComponents();
    }
    
    //creates arraylist and loads up data from arraylist of type string (lstConfTeams)
    void createCTArrayList ()
    {
        String CTteamName;
        String CTstatus="";
        int CTwins=0;
        int CTlosses=0;
        double CTwinLossPct=0;
    
        for (int iCount = 0; iCount <lstConfTeams.getModel().getSize(); iCount++)
        {
            CTteamName=lstConfTeams.getModel().getElementAt(iCount);
            alCTeams.add(new BasketballTeam(CTstatus,CTteamName,CTwins,CTlosses,CTwinLossPct));
        }
    
    }
    
    private void btnPlayMouseClicked(java.awt.event.MouseEvent evt) {                                     
    // call createCTArrayList method and begin for loop
    
    
        createCTArrayList ();
    
        int iCTCount;
    
        for (iCTCount=0; iCTCount<alCTeams.size; iCTCount++){
        //
        }
    }
    

    【讨论】:

      【解决方案2】:

      如果您希望alCTeams 对其他方法可见,那么它应该是类成员而不是局部变量。

      【讨论】:

      • 此外,没有声明“lstConfTeams”,变量名称令人困惑并通过不必要的前缀揭示实现,名称不符合 Java 命名约定,并且您没有使用事件Dispatch Thread,这意味着您的某些 GUI 操作可能不起作用。
      【解决方案3】:

      您尚未在 btnPlayMouseClicked 方法中声明 alCTeams。您可以通过从 createCTArrayList 返回实例来传递对象 ogf

      public class JFMarchMadness extends javax.swing.JFrame {
      
          public JFMarchMadness() 
          {
              initComponents();
          }
      
          //creates arraylist and loads up data from arraylist of type string (lstConfTeams)
          ArrayList<BasketballTeam> createCTArrayList ()
          {
              ArrayList<BasketballTeam> alCTeams=new ArrayList <>();
      
              String CTteamName;
              String CTstatus="";
              int CTwins=0;
              int CTlosses=0;
              double CTwinLossPct=0;
      
              for (int iCount = 0; iCount <lstConfTeams.getModel().getSize(); iCount++)
              {
                  CTteamName=lstConfTeams.getModel().getElementAt(iCount);
                  alCTeams.add(new BasketballTeam(CTstatus,CTteamName,CTwins,CTlosses,CTwinLossPct));
              }
              return alCTeams;
          }
      
          private void btnPlayMouseClicked(java.awt.event.MouseEvent evt) {                                     
          // call createCTArrayList method and begin for loop
      
      
              ArrayList<BasketballTeam> alCTeams = createCTArrayList ();
      
              int iCTCount;
      
              for (iCTCount=0; iCTCount<alCTeams.size; iCTCount++){
              //
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-01-12
        • 1970-01-01
        • 2018-10-16
        • 2020-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多