在java中将字符串数组转换为int数组

在java中将字符串数组转换为int数组,java,Java,我是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]=In

我是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
int[] arr = strArrayToIntArray(/*YOUR STR ARRAY*/);

要帮助调试并改进代码,请执行以下操作:

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(字符串[]字符串){
整数[]intarray=新整数[strings.length];

例如,对于(int i=0;i假设我们有一个字符串数组:

String[] strings = {"1", "2", "3"};
使用Lambda表达式(自Java 8以来),您可以执行下一个

int[]array=Arrays.asList(strings).stream().mapToInt(Integer::parseInt).toArray();
这是另一种方式:

int[]array=Arrays.stream(strings).mapToInt(Integer::parseInt.toArray();
---------
注意事项
  1.in.
  二,

/*拆分数字数组 由空格分隔成字符串数组*/

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;
}
int[] myIntArray = Arrays.stream(myStringArray).mapToInt(Integer::parseInt).toArray();

由于您试图获取一个
整数[]
数组,您可以使用:

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及更高版本。

您传入的字符串是什么?“字符串中的字符必须全部为十进制数字,但第一个字符可以是ASCII减号“-”(“\u002D”)指示负值。返回结果的整数值,就像参数和基数10作为parseInt(java.lang.String,int)方法的参数一样。“当字符串不是正确格式的整数时,会发生这种情况。此外,您可能应该使用
int[]
not
integer[]
.Hi发现错误字符串数组中有一个尾随“\r”。因此3被视为“3\r”。我删除了尾随,它\r工作正常。请以后复制/粘贴异常和错误消息。您可以编辑您的问题以添加这些详细信息。我建议您不要“代码整洁”建议-这会使代码更混乱,而不是更整洁。我发现“整洁”的代码非常可读。简洁的代码看起来非常漂亮。:@La comadreja我不这么认为。非整洁的方法更“自然”.如何使用相同的lambda表达式将字符串数组转换为整数对象数组?@ffguven我觉得自动装箱应该在需要时处理,还是我遗漏了什么?
int[] myIntArray = Arrays.stream(myStringArray).mapToInt(Integer::parseInt).toArray();
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);
}