2016-06-06 3 views
-2

Я использую Netbeans/GUI, чтобы сделать программу игры в фэнтезийную баскетболу. Я пытаюсь создать методы, которые создают arraylists, таким образом, я могу вызвать метод для массива каждый раз, когда он мне понадобится для одного из событий моей кнопки, а не перекодировать массив под каждым отдельным событием. Метод списка массивов загружает данные для имени команды из списка, созданного в окне проекта. Код выглядит следующим образом:Попытка написать метод для создания списка массивов

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++){ 
     // 
     } 
    } 

Сейчас он получает ошибку, когда он не может найти ArrayList: alCTeams, когда я пытаюсь вызвать его в течение оператора цикла. Я неправильно написал метод, или я его неправильно называю?

ответ

0

Декларация для 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++){ 
    // 
    } 
} 
0

Если вы хотите, чтобы alCTeams был видимым другим методам, он должен быть членом класса, а не локальной переменной.

+0

Кроме того, нет никакой декларации для «lstConfTeams», имена переменных запутанные и раскрывающих реализацию через ненужные префиксы, имена не соответствуют наименованию Java и вы не используете Thread Dispatch Thread, что означает, что некоторые ваши действия с GUI, вероятно, не сработают. –

0

Вы не объявлены alCTeams в методе btnPlayMouseClicked. Вы можете передать экземпляр ОГФУ объекта, возвращая его из createCTArrayList

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++){ 
     // 
     } 
    } 
Смежные вопросы