Список Java<String> для короткого
У меня есть этот список строк:
private final List<String> categoryList = Arrays.asList("27", "28, 96", "10", "15", "7", "98");
Из приведенного выше списка "28, 96" рассматривается как один элемент (не опечатка). Преобразование каждого из них в короткий не имеет никаких проблем, за исключением этого одного элемента:
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 (Short)??? ти
3 ответа
Вы должны разделить эту часть, а также в секунду для цикла
for (String shortstr : categoryList) {
String[] splitstr = shortstr.split(',');
for (String innershort: splitstr) {
short layerValue = Short.parseShort(innershort.trim());
// add it to a list
}
}
Если вы анализируете: "10", "15"
ты получишь new short[] {10, 15};
Если вы анализируете: "28, 96"
вы получите ошибку.
Вы видите разницу? Вы говорите, что у вас нет опечатки, если это так, то вы намерены ошибаться.
Когда вы пытаетесь преобразовать "28, 96" в короткую, абсолютно нормально получить NumberFormatException
так как запятая не допускается в shorts
, В вашем примере у вас нет двух чисел, но вместо этого у вас есть строка "28, 96".
Запятая в строке pmTPSelectList[0].layerRateList = new short[] {28, 96};
интерпретируется как разделитель между двумя числами. Это не является частью этого (что это в первом случае).