如果在自己的類中調用,我的代碼將按照預期返回entrySet()。但是,如果我在Main中通過getter方法調用它,它將返回一個空表。爲什麼?Java Hashtable問題
class Results
{
Hashtable<String, Double> langScores ;
public Results()
{
langScores = new Hashtable<String, Double>() ;
}
public void addScores(double pL1, double pL2, double pL3)
{
langScores.put("English", pL1) ;
langScores.put("French", pL2) ;
langScores.put("German", pL3) ;
System.out.println(langScores.entrySet()) ;
}
public Set<Map.Entry<String, Double>> getWinner()
{
return langScores.entrySet() ;
}
}
MAIN:
class LanguageIdentifier
{
public static void main(String[] args)
{
Results winner = new Results() ;
AnalyseText analyse = new AnalyseText() ; //addScores called from this class
analyse.analyseText() ;
System.out.println(winner.getWinner()) ;
}
}
輸出
[German=0.0040, French=0.0030, English=0.02] // print statement within Results class works
[] // print statement within Main class prints empty table !?
你在你的MAIN片段中調用addScores()的地方在哪裏? – sjr 2011-04-23 23:53:54
addScores從AnalyseText類中調用,並且正確地工作,因爲我得到了一個填充表。另請注意,Result類中的print語句位於add語句之後,用於顯示htese工作。 – raoulbia 2011-04-24 00:00:17
但是,您不會將結果傳遞給AnalyseText類。你在不同的對象上調用addScores()來調用getWinner()。 – sjr 2011-04-24 00:01:37