2014-02-19 4 views
0

В этом есть примерный бит кода, и я не уверен, сколько деталей нужно выполнить, но я заполняю treemap с данными из таблицы mysql, и у меня есть итерация через него.Итерация через массив, заполненный из таблицы MySQL

Вот код класса, содержащий TreeMap

public class SeasonResults{ 

private static Map<String,SeasonResults> allResults = new TreeMap<String,SeasonResults>(); 
private String hometeam; 
private String awayteam; 
private String result;           

private static SeasonResults result6; 

public static SeasonResults add(String hometeam, String awayteam, String result) 
{ 
     result6 = new SeasonResults(hometeam, awayteam, result); 
     allResults.put(hometeam,result6); 

    return result6; 
} 


private SeasonResults(String hometeam, String awayteam, String result) 
{ 
    this.hometeam = hometeam; 
    this.awayteam = awayteam; 
    this.result = result; 
} 

public static Collection<SeasonResults> getCollection() 
{ 
    return allResults.values(); 
} 

@Override 
public String toString() 
{ 
    return " "+hometeam+", "+awayteam+", "+result; 
} 

}

и вот-код, где я заполнить массив, а затем попытаться итерацию через него.

public void HeadToHead(){ 
    try 
    { 
     //Sets up the connedtion to the database and installs drivers which are required. 
     Class.forName("com.mysql.jdbc.Driver");                   
     con = DriverManager.getConnection("jdbc:mysql://localhost", "username", "password");   

     String SQL = "SELECT * FROM PreviousSeasons WHERE HomeTeam=? and AwayTeam=?"; 
     PreparedStatement prepst;    

     prepst = con.prepareStatement(SQL); 
     prepst.setString(1,box1.getSelectedItem().toString()); 
     prepst.setString(2,box2.getSelectedItem().toString()); 
     rs = prepst.executeQuery(); 

     while (rs.next()) 
     { 
      //This retrieves each row of League table and adds it to an array in the League Results class. 

      hometeam = rs.getString("HomeTeam"); 
      awayteam = rs.getString("AwayTeam");      
      result = rs.getString("Result");      

      custs = (hometeam + "," + awayteam + "," + result);  // Takes all the variables containging a single customers information and puts it into a string, seperated by commas. 
      SeasonResults.add(hometeam, awayteam, result); 
     } 
    } 
    catch (Exception e) 
    { 
     System.out.println("Error " +e);                    
    } 

    Seasonrecord = SeasonResults.getCollection(); 
    seasons = new SeasonResults[Seasonrecord.size()]; 
    Iterator iterateSeason = Seasonrecord.iterator(); 
    int i = 0; 

    while(iterateSeason.hasNext()){ 
     seasons[i] = (SeasonResults)iterateSeason.next(); 
     i++; 

     if(result.equals("HW")){ 
      hometeamvalue = hometeamvalue + 50; 
     } 
     else if(result.equals("D")){ 
      hometeamvalue = hometeamvalue + 10; 
      awayteamvalue = awayteamvalue + 10; 
     } 
     else{ 
      if(result.equals("AW")){ 
       awayteamvalue = awayteamvalue + 50; 
      } 
     } 
    } 
} 

В базе данных добавлено 5 результатов 'результата'. 2 - «HW», 2 - «AW», а 1 - «D». То, что я пытаюсь сделать, это распечатать «hometeamvalue» и «awayteamvalue», но когда я сделаю это значение, будет напечатано только 10. Будет использовано только значение первого поля.

Я использую тот же код для повторения массива, когда хочу отображать результаты в графическом интерфейсе, и отображаются все поля. Но когда я пытаюсь выполнить некоторые вычисления с ними, это не сработает.

Любые идеи, в чем проблема?

+0

если (result.equals ("HW")) в этом выражении заменяются как результат с помощью сезонов [i] .getResult(). equals («HW»), а в остальных двух случаях, если утверждения тоже делают то же самое ... и попробуйте – Naren

+0

Пробовал, но он не работает. Я не думаю, что эта часть является проблемой, потому что она отлично работает для первого элемента массива, но не идет дальше и получает другие. – user3139748

+0

Это сработает, но вам нужно будет изменить ur Serachesults Code также .. Может ли пост PostResults.java полностью и почему u r принимает приватную статическую карту allResults в том же классе ... – Naren

ответ

0

Вы должны сделать, как этот

SeasonResults.java

public class SeasonResults{ 
private String hometeam; 
private String awayteam; 
private String result;           

public String getHometeam() { 
    return hometeam; 
} 
public void setHometeam(String hometeam) { 
    this.hometeam = hometeam; 
} 
public String getAwayteam() { 
    return awayteam; 
} 
public void setAwayteam(String awayteam) { 
    this.awayteam = awayteam; 
} 
public String getResult() { 
    return result; 
} 
public void setResult(String result) { 
    this.result = result; 
} 

public SeasonResults(String hometeam, String awayteam, String result) 
{ 
    this.hometeam = hometeam; 
    this.awayteam = awayteam; 
    this.result = result; 
} 
@Override 
public String toString() 
{ 
    return " "+hometeam+", "+awayteam+", "+result; 
} 

} 

HeadToHaed метод

public void HeadToHead(){ 
     String hometeam,awayteam,result; 
     int hometeamvalue,awayteamvalue; 
      List<SeasonResults> allResults = new ArrayList<SeasonResults>(); 

     try 
     { 
      //Sets up the connedtion to the database and installs drivers which are required. 
      Class.forName("com.mysql.jdbc.Driver");                   
      Connection con = DriverManager.getConnection("jdbc:mysql://localhost", "username", "password");   

      String SQL = "SELECT * FROM PreviousSeasons WHERE HomeTeam=? and AwayTeam=?"; 
      PreparedStatement prepst;    

      prepst = con.prepareStatement(SQL); 
      prepst.setString(1,box1.getSelectedItem().toString()); 
      prepst.setString(2,box2.getSelectedItem().toString()); 
      ResultSet rs = prepst.executeQuery(); 

      SeasonResults seasonResults=null; 
      while (rs.next()) 
      { 

       //This retrieves each row of League table and adds it to an array in the League Results class. 

       hometeam = rs.getString("HomeTeam"); 
       awayteam = rs.getString("AwayTeam");      
       result = rs.getString("Result");      

       seasonResults=new SeasonResults(hometeam, awayteam, result) ; 
       custs = (hometeam + "," + awayteam + "," + result);  // Takes all the variables containging a single customers information and puts it into a string, seperated by commas. 
       allResults.add(seasonResults); 
      } 
     } 
     catch (Exception e) 
     { 
      System.out.println("Error " +e);                    
     } 

     System.out.println("SIze of ArrayList::"+allResults.size()); 
     for(SeasonResults temp:allResults) 
     { 
       if(temp.getResult().equals("HW")){ 
        hometeamvalue = hometeamvalue + 50; 
       } 
       else if(temp.getResult().equals("D")){ 
        hometeamvalue = hometeamvalue + 10; 
        awayteamvalue = awayteamvalue + 10; 
       } 
       else{ 
        if(temp.getResult().equals("AW")){ 
         awayteamvalue = awayteamvalue + 50; 
        } 
       } 

     } 

    } 

Let Me Know Если U Face Есть вопросы

+0

Он работает. Спасибо ОЧЕНЬ много, это было проблемой для меня на прошлой неделе. – user3139748

Смежные вопросы