【问题标题】:Java List<String> to ShortJava List<String> 短
【发布时间】:2014-06-26 07:56:26
【问题描述】:

我有这个字符串列表:

private final List<String> categoryList = Arrays.asList("27", "28, 96", "10", "15", "7", "98");

从上面的列表中,“28, 96”被认为是一个项目(不是错字)。除了那一项之外,将它们中的每一个都转换为short没有问题:

for ( int m = 1; m < categoryList.size(); m++) {
    short layerValue = Short.parseShort(categoryList.get(m));
}

转换“28, 96”时出现此错误:

java.lang.NumberFormatException: For input string: "28, 96"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:492)
    at java.lang.Short.parseShort(Short.java:117)
    at java.lang.Short.parseShort(Short.java:143)

但是如果我直接添加的话:

//pmTPSelectList[0].layerRateList = new short[] {layerValue};
pmTPSelectList[0].layerRateList = new short[] {28, 96};

它工作正常。所以,我很困惑为什么会这样以及是否有办法转换它,因为我需要循环几个值来替换 layervalue(短)???太棒了

【问题讨论】:

  • 拥有 new Short[] {28, 96} 将是一个数组,编译器可以通过在内部删除 "," 来理解。但是使用 parseShort("28, 96") 会抛出错误,因为编译器无法将 "," 转换为 short 或编译器会将整个参数 "28, 98" 作为单个字符串转换为 short。因此抛出错误。因此,请检查是否存在“,”并在 parseShort(); 之前将其删除;
  • 您对将 28,96 解析为 short 有何期望? Short 是一个整数类型,这意味着它没有小数。如果你想有两个值,然后拆分(检查答案),这样你就会有两个数字(28 和 96)。

标签: java string list loops short


【解决方案1】:

您还需要在第二个 for 循环中拆分该部分

for (String shortstr : categoryList) {
    String[] splitstr = shortstr.split(',');
    for (String innershort: splitstr) {
        short layerValue = Short.parseShort(innershort.trim());
        // add it to a list
    }
}

【讨论】:

  • 我不认为你可以使用 short 作为变量名。
  • 你得到了短数据类型的 trim()? trim 应该在 parseShort 参数中作为 Short.parseShort(innershort.trim())
  • 感谢 cmets :) Jayaprasad 和 Puce 都是对的
【解决方案2】:

当您尝试将“28, 96”转换为short 时,得到NumberFormatException 是绝对正常的,因为shorts 中不允许使用逗号。在您的示例中,您没有两个数字,而是有字符串“28, 96”。

pmTPSelectList[0].layerRateList = new short[] {28, 96}; 行中的逗号被解释为两个数字之间的分隔符。 Is 不是它的一部分(在第一种情况下是什么)。

【讨论】:

    【解决方案3】:

    如果你解析:"10", "15" 你会得到new short[] {10, 15};
    如果你解析:"28, 96"你会得到错误。

    你看出区别了吗?你说你没有错别字,如果是,那你的意图是错误的。

    【讨论】:

      猜你喜欢
      • 2010-11-22
      • 2021-09-17
      • 1970-01-01
      • 1970-01-01
      • 2020-01-26
      • 2011-12-11
      • 2022-01-11
      • 1970-01-01
      • 2014-09-15
      相关资源
      最近更新 更多