My code returns entrySet() as expected if called from within its own class. However if i call it via a getter method in Main it returns an empty table. Why?
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()) ;
}
}
OUTPUT
[German=0.0040, French=0.0030, English=0.02] // print statement within Results class works
[] // print statement within Main class prints empty table !?
In your main you didn't put any scores in winner (using addScores), so it's still empty.
Adding the line winner.addScores(1, 2, 3); fixed it for me.
As sjr mentioned, and according to your edit, you don't pass a reference to the Results object to the analyse object in creation, change the AnalyseText constructor to receive Results object as a parameter, and set the private Result reference of TextAnalyser to this object:
Results winner;
public TextAnalyser(Results winner)
{
this.winner = winner;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With