#java #string #parsing #integer
#java #строка #синтаксический анализ #целое число
Вопрос:
Это мой метод, но я получаю исключение NumberFormatException для ввода «-«, когда я пытаюсь запустить его для отрицательного числа.
public newObj(String s)
{
list = new LinkedList<Integer>();
String[] splitted = s.split("\d");
int[] ints = new int[splitted.length];
for (int i = 0; i < splitted.length - 1; i ) {
ints[i] = Integer.parseInt(splitted[i]);
}
for (int j = 0; j < ints.length - 1; j ) {
list.add(ints[j]);
}
}
Моя входная строка — это просто число типа «-123456» или «12345». Положительные числа работают, но я не могу заставить работать отрицательные.
Для моей отрицательной входной строки я хочу, чтобы мой список был чем-то вроде [-1,-2,-3,-4,-5,-6].
Комментарии:
1. (согласно Ren8888) «Какова ваша входная строка?»
Ответ №1:
он разделит число на числовой шаблон, поэтому, если у вас есть -123
Например:
String str = "-123";
System.out.println(Arrays.toString(str.split("\d")));
вывод
[-]
и -
не может быть проанализирован на int
из комментариев:
для ввода, например -123456
, op хочет сделать его положительным числом
Вы можете сделать это с помощью
Math.abs(Integer.parseInt(inputString))
пусть он проанализирует отрицательное число, а затем вы сможете получить его абсолютное значение, используя Math.abs()
далее из комментариев
op хочет разделить каждую цифру и применить знак, вы можете сделать что-то вроде
String str = "-123";
int numbers[] = null;
int characterIndex = 0;
boolean isNegative = false;
if (str.trim().startsWith("-")) {
characterIndex = 1;
isNegative = true;
numbers = new int[str.length() - 1];
} else {
numbers = new int[str.length()];
}
for (int numIndex = 0; characterIndex < str.length(); characterIndex , numIndex ) {
numbers[numIndex] = Integer.parseInt(str.substring(characterIndex, characterIndex 1));
if (isNegative) {
numbers[numIndex] = -1 * numbers[numIndex];
}
}
System.out.println(Arrays.toString(numbers));
Примечание: обработка ошибок остается за вами
Комментарии:
1. Могу ли я просто пропустить «-«, а затем умножить каждое число на -1, когда добавлю его в список?
2. как выглядит ваш образец входной строки?
3. Примером будет «-123456», но мне также пришлось бы обрабатывать положительные значения, такие как «123456»
4. Извините, я не имел в виду, что хочу обратить это в позитив. Я имел в виду, что входная строка может быть либо положительной, либо отрицательной. На данный момент мой код работает для положительных чисел, но я не могу заставить его работать для отрицательных. Я думаю, что у меня есть решение моей проблемы, но я просто не знаю способа проанализировать и разделить строку, которая является отрицательным числом, на отдельные отрицательные целые числа.
5.Вы можете просто проанализировать отрицательное число таким же образом, например
Integer.parseInt("-123")
, вернется кint
-123