Ответ 1
Чтобы избавиться от лишних пробелов, вы можете изменить код следующим образом:
intarray[i]=Integer.parseInt(str.trim()); // No more Exception in this line
Я новичок в программировании на 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++;
}
}
Любая помощь будет большой благодарностью!!!
Чтобы избавиться от лишних пробелов, вы можете изменить код следующим образом:
intarray[i]=Integer.parseInt(str.trim()); // No more Exception in this line
Предположим, например, что у нас есть массивы строк:
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
Чтобы отладить и улучшить код, сделайте следующее:
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);
Еще один короткий путь:
int[] myIntArray = Arrays.stream(myStringArray).mapToInt(Integer::parseInt).toArray();
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);
}
}
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.
}
}
Это потому, что ваша строка строго не содержит целые числа в строковом формате. В нем есть буквенно-цифровые символы.
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*/);