Я новичок в программировании на Java, но после осмотра на этом сайте я уверен, что это должно сработать.Как превратить массив строк в массив Ints?
public static int[] ArrayStringToArrayInt(String[] arrayString) {
int[] arrayInt = new int[arrayString.length]; //Array of Ints for output
for (int i = 0; i <= arrayString.length; i++) { //Run through the
arrayInt[i] = Integer.parseInt(arrayString[i]); //array, Parsing each
} //item into an int
return arrayInt;
}
Я хочу этот метод, чтобы сделать, это массив ввода: [ «1», «2», «3»] с каждым элементом является строкой, и вернуться [1,2,3], где каждый элемент является int.
Я вызываю метод с этим кодом
int[] toBeSorted = ArrayStringToArrayInt(inputStringArray);
В этом случае toBeSorted одновременно объявляется здесь и инициализируется в то же время.
Всякий раз, когда я пытаюсь запустить это я получаю следующее сообщение об ошибке:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at sorter.Sorter.ArrayStringToArrayInt(Sorter.java:31)
at sorter.Sorter.main(Sorter.java:22)
Java Result: 1
линия 31 является тело моей цикл, часть, которая делает синтаксический анализ, и линия 22 является местом, где метод называется.
Причина, по которой я нуждаюсь в этом, заключается в том, что я пытаюсь ввести данные от пользователя со классом Scanner и хочу, чтобы они могли вводить множество чисел одновременно. Затем я использую шаблон разделителя, чтобы превратить вход в массив. Хотя это кажется прекрасным, я мог бы только выяснить, как сделать входной массив массив строк, а не ints, что является моей проблемой.
Итак, я думаю, что я прошу 1) Почему мой код не работает? и 2) есть ли более простой способ ввода ввода от пользователя и превратить его в массив значений ints, чем это?
Для тех, кто хотел бы видеть весь свой код, здесь
бит в середине с контрольной переменной и добавление двух чисел это просто способ для меня, чтобы проверить свой код и посмотреть, если это сработало. Он должен показать результат сложения первых двух чисел в списке, который вы ввели
package sorter;
import java.util.Scanner;
import java.util.Arrays;
public class Sorter {
public static void main(String[] args) {
Scanner userInput = new Scanner(System.in);
System.out.println("Enter a list to be sorted, seperate numbers by commas:");
String input = userInput.nextLine(); //Gets aan input as a String
String delims = "[,]+"; //Use Comma as Delimiter
String[] inputStringArray = input.split(delims); //Parse String and creates
//an array
System.out.println(Arrays.toString(inputStringArray)); //Outputs a string of
//the given array
int[] toBeSorted = ArrayStringToArrayInt(inputStringArray);
int test = toBeSorted[0] + toBeSorted[1];
System.out.println(test);
}
public static int[] ArrayStringToArrayInt(String[] arrayString) {
int[] arrayInt = new int[arrayString.length]; //Array of Ints for output
for (int i = 0; i <= arrayString.length; i++) { //Run through the
arrayInt[i] = Integer.parseInt(arrayString[i]); //array, Parsing each
} //item into an int
return arrayInt;
}
}
'array.length' даст вам номер элемента, а не индекс, поэтому вам нужно изменить условие цикла на' i
silentprogrammer