내 코드는 자체 클래스 내에서 호출 된 경우 예상대로 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() ;
}
}
주요
: 당신은 승자의 모든 점수를 넣지 않은 주에서
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 !?
MAIN 스 니펫에서 addScores()를 어디에서 호출합니까? – sjr
addScores는 AnalyseText 클래스에서 호출되며 필자가 채워진 테이블을 다시 얻으면 올바르게 작동합니다. 또한 Result 클래스의 print 문은 htese 작업을 표시하는 add 문 다음에 있음에 유의하십시오. – raoulbia
그러나 결과를 AnalyseText 클래스에 전달하지 마십시오. getWinner()를 호출하고있는 다른 객체의 addScores()를 호출하고 있습니다. – sjr