Таким образом, мне дадут три числа, разделенные неизвестным количеством пробелов из поля ввода на 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);
Спасибо за помощь!
Причина, по которой parseInt
терпит неудачу, заключается в том, что второй передаваемый вами параметр интерпретируется как radix (числовая база для чтения номера), что, безусловно, не то, что вы ищете.
Когда у вас есть строка с несколькими номерами, разделенная переменным числом пробельных символов, вы можете использовать Scanner
для чтения:
Scanner sc = new Scanner(values);
List<Integer> list = new ArrayList<Integer>();
while (sc.hasNextInt()) {
list.add(sc.nextInteger());
}
В этот момент List<Integer>
содержит числа из входной строки, преобразованные в тип Integer
.
Вы используете parseInt
неправильно. Его подпись
public static int parseInt(String s, int radix)
Вы передаете в качестве второго аргумента символ, который получает повышение до int, тогда его значение кодировки используется как основание, что неверно. Просто забудьте второй аргумент (я предполагаю, что вы работаете в базе 10).
Кроме того .trim()
просто удаляет ведущее и завершающее пробелы. Чтобы удалить пробелы между номерами, вы должны использовать
String[] tokens = values.split("\\s+")
Что разделяет строку на токены, разделенные указанным регулярным выражением (которое является "одним или несколькими символами пробела").