Как преобразовать строку чисел с разным количеством пробелов в серию переменных Int в Java.

1

Таким образом, мне дадут три числа, разделенные неизвестным количеством пробелов из поля ввода на JOptionPane (пробелы могут варьироваться между числом, а так же между пятью между первым и вторым, а затем, возможно, 8 между вторым и третьим). Что мне нужно to затем принимает эти числа и использует каждый из них в качестве переменной в остальной части моего кода. У меня возникли проблемы с назначением этих чисел один раз в строке для трех переменных. То, что я пытался сделать, это использовать trim(), чтобы избавиться от всех пробелов, а затем просто разобрать charAt() для позиции 0,1 и 2 в каждую переменную отдельно. Я получаю сообщение об ошибке каждый раз, когда читаем: "Исключение в потоке" main "java.lang.NumberFormatException: Radix 56 больше, чем Character.MAX_RADIX в java.lan.Integer.parseInt (Неизвестный источник).

ПРИМЕЧАНИЕ. Я остановился при первом анализе, потому что он не работает. Я бы начал разбирать другие два, но не было смысла, когда это первое не работает правильно.

Код, который я использую для этого бита:

String values = "0";
int numLinks = 0;
int start = 0;
int numPass = 0;

values = JOptionPaine.showInputDialog(null, "Enter Values: ", JOptionPane.QUESTION_MESSAGE);
values.trim();
numLinks = Integer.parseInt(values, values.char.At(0));
System.out.print(numLinks);

Спасибо за помощь!

Теги:
string

2 ответа

1
Лучший ответ

Причина, по которой parseInt терпит неудачу, заключается в том, что второй передаваемый вами параметр интерпретируется как radix (числовая база для чтения номера), что, безусловно, не то, что вы ищете.

Когда у вас есть строка с несколькими номерами, разделенная переменным числом пробельных символов, вы можете использовать Scanner для чтения:

Scanner sc = new Scanner(values);
List<Integer> list = new ArrayList<Integer>();
while (sc.hasNextInt()) {
    list.add(sc.nextInteger());
}

В этот момент List<Integer> содержит числа из входной строки, преобразованные в тип Integer.

  • 0
    Могу ли я вместо этого поместить их в массив, а не в список Array? просто увеличивать индекс каждый раз, когда я добавляю значение, а затем делаю это так?
  • 0
    @bobHarding Вы можете преобразовать список в массив. Однако проблема с массивом заключается в том, что вам нужно знать размер во время его создания. Список, с другой стороны, позволяет добавлять элементы по мере продвижения.
Показать ещё 2 комментария
1

Вы используете parseInt неправильно. Его подпись

public static int parseInt(String s, int radix)

Вы передаете в качестве второго аргумента символ, который получает повышение до int, тогда его значение кодировки используется как основание, что неверно. Просто забудьте второй аргумент (я предполагаю, что вы работаете в базе 10).

Кроме того .trim() просто удаляет ведущее и завершающее пробелы. Чтобы удалить пробелы между номерами, вы должны использовать

String[] tokens = values.split("\\s+")

Что разделяет строку на токены, разделенные указанным регулярным выражением (которое является "одним или несколькими символами пробела").

Ещё вопросы

Сообщество Overcoder
Наверх
Меню