我是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++;
}
}
任何帮助都会非常感谢!!!
答案 0 :(得分:81)
例如,假设我们有一个字符串数组:
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. Lambda Expressions中的The Java Tutorials
2. Java SE 8: Lambda Quick Start
答案 1 :(得分:20)
要删除其他空格,您可以更改代码:
intarray[i]=Integer.parseInt(str.trim()); // No more Exception in this line
答案 2 :(得分:10)
为了帮助调试并使代码更好,请执行以下操作:
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);
答案 3 :(得分:3)
另一种简便方法:
int[] myIntArray = Arrays.stream(myStringArray).mapToInt(Integer::parseInt).toArray();
答案 4 :(得分:2)
由于您尝试获取Integer[]
数组,因此可以使用:
Integer[] intarray = Stream.of(strings).mapToInt(Integer::parseInt).boxed().toArray(Integer[]::new);
您的代码:
private void processLine(String[] strings) {
Integer[] intarray = Stream.of(strings).mapToInt(Integer::parseInt).boxed().toArray(Integer[]::new);
}
请注意,这仅适用于Java 8及更高版本。
答案 5 :(得分:1)
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 :(得分:1)
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 :(得分:1)
这是因为您的字符串不严格包含字符串格式的整数。它里面有字母数字字符。
答案 8 :(得分:1)
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*/);