Исключение числового формата при преобразовании строки

Следующий код не запускается и продолжает выдавать исключение числового формата в строке, где ошибка «Исключение в потоке «основной» java.lang.NumberFormatException: для входной строки: «SAN 1905 1808+24 1512+17 1209+10 1708 -06 2016-16 211831 211941 192652" ""

intAlt = Integer.parseInt(strAlt);

Я не уверен, почему это происходит, и был бы признателен за любые советы по этому вопросу.

private int getPos(String strAlt)
{
 int intAlt;
 int intPos =0;
 intAlt = Integer.parseInt(strAlt);
 switch (intAlt)
 {
  case 3:
   intPos = 4;
   break;
  case 6:
   intPos = 9;
   break;
  case 9:
   intPos = 17;
   break;   
  case 12:
   intPos = 25;
   break;
  case 18:
   intPos = 33;
   break;   
  case 24:
   intPos = 41;
   break; 
  case 30:
   intPos = 49;
   break;   
  case 34:
   intPos = 56;
   break;   
  case 39:
   intPos = 63;
   break;  
 }
 return intPos;
}

person Alex Chapp    schedule 10.03.2013    source источник
comment
Используйте отладчик или оператор SOP, чтобы увидеть значение strAlt.   -  person Code-Apprentice    schedule 10.03.2013
comment
Я согласен с @Code-Guru, за исключением того, что я только что заметил, что OP заявляет, что он не будет компилироваться. ОП, вам нужно уточнить - исключение происходит только во время выполнения. Он не компилируется или выдает исключение при запуске?   -  person devrobf    schedule 10.03.2013
comment
Хорошо, чтобы уточнить, ваш код не компилируется? или он выдает NumberFormatExceptions? Он не может делать и то, и другое! В любом случае, опубликуйте точное сообщение об ошибке, чтобы мы могли помочь.   -  person Code-Apprentice    schedule 10.03.2013
comment
Он выдает ошибку, когда я запускаю программу и останавливаю ее раньше, извините за то, что она выдает исключение в потоке main java.lang.NumberFormatException: для входной строки: SAN 1905 1808+24 1512+17 1209+10 1708-06 2016-16 211831 211941 192652   -  person Alex Chapp    schedule 10.03.2013
comment
Эта входная строка не может быть преобразована в целое число, в ней есть буквы, символы и пробелы. Шнур должен был быть таким? Либо у вас есть ошибка в коде, либо parseInt не делает то, что вы думаете.   -  person devrobf    schedule 10.03.2013
comment
Как так вы хотите преобразовать SAN 1905 1808+24 1512+17 1209+10 1708-06 2016-16 211831 211941 192652 в int?   -  person Abimaran Kugathasan    schedule 10.03.2013
comment
Вы прочитали docs.oracle.com/javase /1.4.2/docs/api/java/lang/Integer.html ?   -  person PM 77-1    schedule 10.03.2013
comment
Я хочу, чтобы первые 2 числа превратились в int, поэтому 19, 18 , 15, 12, чтобы указать их положение в строке, когда случай 3 должен быть первым целым числом 19, что делает позицию 4, когда дело 5 должно быть 18, что на позиции 9   -  person Alex Chapp    schedule 10.03.2013
comment
@Alex - Тогда вам нужно закодировать такое разделение. Метод parseInt анализирует одно число.   -  person PM 77-1    schedule 10.03.2013
comment
Какой метод я должен использовать для его кодирования, чтобы он смотрел на первые 2 цифры каждого набора чисел?   -  person Alex Chapp    schedule 10.03.2013
comment
@AlexChapp текущий метод не изобретен, вы должны написать свой собственный.   -  person yehe    schedule 10.03.2013
comment
@AlexChapp Вам нужно больше, чем просто один метод, чтобы делать то, что вы хотите. Вы описали словами, что вы хотите сделать, теперь я предлагаю вам просмотреть документацию API для String, чтобы найти методы, которые помогут вам перевести эти шаги в код Java.   -  person Code-Apprentice    schedule 10.03.2013


Ответы (1)


Если вы передадите «SAN 1905 1808+24 1512+17 1209+10 1708-06 2016-16 211831 211941 192652» в getPos(String strAlt), он выполнит:

intAlt = Integer.parseInt(strAlt);

Конечно, это вызовет исключение. см. этот документ

person yehe    schedule 10.03.2013