【发布时间】: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