我是java编程的新手.我的问题是我有一个字符串数组但是当我试图将它转换为一个int数组时我会继续
java.lang.NumberFormatException
Run Code Online (Sandbox Code Playgroud)
我的代码是
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++;
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助都会非常感谢!!!
Pau*_*gas 92
例如,假设我们有一个字符串数组:
String[] strings = {"1", "2", "3"};
Run Code Online (Sandbox Code Playgroud)
使用Lambda表达式[1] [2](自Java 8起),您可以执行下一个▼:
int[] array = Arrays.asList(strings).stream().mapToInt(Integer::parseInt).toArray();
Run Code Online (Sandbox Code Playgroud)
▼这是另一种方式:
int[] array = Arrays.stream(strings).mapToInt(Integer::parseInt).toArray();
Run Code Online (Sandbox Code Playgroud)
---------
注释
1. Java教程中的 Lambda表达式.
2. Java SE 8:Lambda快速入门
Sea*_*oyd 19
要删除其他空格,可以像这样更改代码:
intarray[i]=Integer.parseInt(str.trim()); // No more Exception in this line
Run Code Online (Sandbox Code Playgroud)
Boh*_*ian 11
为了帮助调试并使代码更好,请执行以下操作:
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
此外,从代码整洁点来看,您可以通过执行以下操作来减少行:
for (String str : strings)
intarray[i++] = Integer.parseInt(str);
Run Code Online (Sandbox Code Playgroud)
另一个简短的方法:
int[] myIntArray = Arrays.stream(myStringArray).mapToInt(Integer::parseInt).toArray();
Run Code Online (Sandbox Code Playgroud)