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

Man*_*j I 37 java

我是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快速入门

  • 如何使用相同的 lambda 表达式将字符串数组转换为整数对象数组? (2认同)

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)

  • 我发现"整洁"代码非常易读.简洁的代码看起来很不错.:) (7认同)

J. *_*Doe 5

另一个简短的方法:

int[] myIntArray = Arrays.stream(myStringArray).mapToInt(Integer::parseInt).toArray();
Run Code Online (Sandbox Code Playgroud)