在String中将String数组转换为int数组

我是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"}; 

使用Lambda表达式 [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教程 Lambda表达式 。
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); 
 private void processLine(String[] strings) { Integer[] intarray=new Integer[strings.length]; for(int i=0;i 
 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 

}

这是因为您的字符串不严格包含字符串格式的整数。 它里面有字母数字字符。

 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; } 

这是一个简单的function,应该可以帮到你。 你可以像这样使用他:

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