首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Japid:从HashMap获取键值时的奇怪行为

Japid:从HashMap获取键值时的奇怪行为
EN

Stack Overflow用户
提问于 2012-10-23 12:22:28
回答 2查看 132关注 0票数 0
代码语言:javascript
复制
<p> THAT'S OK: ${((Map<String,Integer>)view.get("upgrade_assignment_type_map")).toString()} </p>

<p> THAT'S ALSO OK:
for( String _name : ((Map<String, Integer>)view.get("upgrade_assignment_type_map")).keySet() ) {
<p> ${_name}: ${((Map<String, Integer>)view.get("upgrade_assignment_type_map")).get(_name)} </p>
}
</p>
<br><br>
<p> SADLY THAT'S NOT OK::: ${((Map<String, Integer>)view.get("upgrade_assignment_type_map")).get("MANUAL")} </p>

上面的代码段打印了下面的输出,这让我很惊讶:

代码语言:javascript
复制
THAT'S OK: {AUTO_WITH_BALANCE_EMPHASIS=2, AUTO_WITH_OFFENSIVE_EMPHASIS=0, MANUAL=3, AUTO_WITH_DEFENSIVE_EMPHASIS=1}

THAT'S ALSO OK:

AUTO_WITH_BALANCE_EMPHASIS: 2

AUTO_WITH_OFFENSIVE_EMPHASIS: 0

MANUAL: 3

AUTO_WITH_DEFENSIVE_EMPHASIS: 1



SADLY THAT'S NOT OK:::

代码段的最后一行试图获取键"MANUAL“的值,但它没有打印该值,如果我尝试将其转换为toString (如${((Map<String, Integer>)view.get("upgrade_assignment_type_map")).get("MANUAL").toString()} ),则在运行时它会显示为null。我不明白为什么会这样?

当我打印得到的每个键的长度(在第一个冒号<p> ${_name}: ${_name.length()} : ${((Map<String, Integer>)view.get("upgrade_assignment_type_map")).get(_name)} </p>之后)时:

代码语言:javascript
复制
AUTO_WITH_BALANCE_EMPHASIS: 29 : 2

AUTO_WITH_OFFENSIVE_EMPHASIS: 29 : 0

MANUAL: 10 : 3

AUTO_WITH_DEFENSIVE_EMPHASIS: 30 : 1

注意:我将在java源代码中创建Map<String, Integer> nameToTypeMap = Maps.newHashMap();形式的映射

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-24 13:22:56

Eclipse没有显示无效字符,并且这些字符串中有无效字符(令人惊讶地是可编译的),所以当我在vim中打开该特定文件时,它显示我并删除了这些无效字符。这就解决了我的问题。

票数 0
EN

Stack Overflow用户

发布于 2012-10-23 13:52:18

我怀疑“手册”条目中的某处有一个无法打印的字符。更改其中一条工作行,如下所示:

代码语言:javascript
复制
<p> KEY_LENGTHS:
for( String _name : ((Map<String, Integer>)view.get("upgrade_assignment_type_map")).keySet() ) {
<p> ${_name}: ${_name.length()}</p>
</p>

如果显示的手册长度不是6,这表明我是对的,您应该查看您的数据源,找出额外的字符来自哪里。

如果不是,我至少会尝试在HTML部分之外进行调试。我还没有使用Play框架,但大概有一些代码填充了这个视图……如果您可以在那里使用调试器,很可能会使诊断变得容易得多。

另一种可能是条目包含一个非ASCII字符,它看起来像ASCII字符,但实际上不是。如果您查看HTML的源代码,您可能会看到这一点(甚至可能是无法打印的字符,这取决于它的处理方式)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13023535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档