Подтвердить что ты не робот

Преобразование массива String в массив int в java

Я новичок в программировании на Java. Мой вопрос в том, что у меня есть строковый массив, но когда я пытаюсь преобразовать его в массив int, я продолжаю получать

java.lang.NumberFormatException

Мой код

private void processLine(String[] strings) {
    Integer[] intarray=new Integer[strings.length];
    int i=0;
    for(String str:strings){
        intarray[i]=Integer.parseInt(str);//Exception in this line
        i++;
    }
}

Любая помощь будет большой благодарностью!!!

4b9b3361

Ответ 1

Чтобы избавиться от лишних пробелов, вы можете изменить код следующим образом:

intarray[i]=Integer.parseInt(str.trim()); // No more Exception in this line

Ответ 2

Предположим, например, что у нас есть массивы строк:

String[] strings = {"1", "2", "3"};

С Лямбда-выражения [1] [2] (начиная с Java 8) вы можете сделать следующий :

int[] array = Arrays.asList(strings).stream().mapToInt(Integer::parseInt).toArray();

Это другой способ:

int[] array = Arrays.stream(strings).mapToInt(Integer::parseInt).toArray();

<суб > ---------
Примечания
1. Лямбда-выражения в Учебники Java.
2. Java SE 8: быстрый запуск Lambda

Ответ 3

Чтобы отладить и улучшить код, сделайте следующее:

private void processLine(String[] strings) {
    Integer[] intarray=new Integer[strings.length];
    int i=0;
    for(String str:strings){
        try {
            intarray[i]=Integer.parseInt(str);
            i++;
        } catch (NumberFormatException e) {
            throw new IllegalArgumentException("Not a number: " + str + " at index " + i, e);
        }
    }
}

Кроме того, из точки аккуратности кода вы можете уменьшить количество строк, выполнив следующие действия:

for (String str : strings)
    intarray[i++] = Integer.parseInt(str);

Ответ 4

Еще один короткий путь:

int[] myIntArray = Arrays.stream(myStringArray).mapToInt(Integer::parseInt).toArray();

Ответ 5

private void processLine(String[] strings) {
    Integer[] intarray=new Integer[strings.length];
    for(int i=0;i<strings.length;i++) {
        intarray[i]=Integer.parseInt(strings[i]);
    }
    for(Integer temp:intarray) {
        System.out.println("convert int array from String"+temp);
    }
}

Ответ 6

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class array_test {

public static void main(String args[]) throws IOException{

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();

String[] s_array = line.split(" ");

/* Разделение массива числа разделенные пробелом в массив строк. */

Integer [] a = new Integer[s_array.length];

/Создание массива int размером равным строковому массиву. /

    for(int i =0; i<a.length;i++)
    {
        a[i]= Integer.parseInt(s_array[i]);// Parsing from string to int

        System.out.println(a[i]);
    }

    // your integer array is ready to use.

}

}

Ответ 7

Это потому, что ваша строка строго не содержит целые числа в строковом формате. В нем есть буквенно-цифровые символы.

Ответ 8

public static int[] strArrayToIntArray(String[] a){
    int[] b = new int[a.length];
    for (int i = 0; i < a.length; i++) {
        b[i] = Integer.parseInt(a[i]);
    }

    return b;
}

Это простая функция, которая должна вам помочь. Вы можете использовать его так:

int[] arr = strArrayToIntArray(/*YOUR STR ARRAY*/);