繁体   English   中英

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

[英]Converting a String array into an int Array in java

我是java编程的新手。 我的问题是,我有一个String数组,但是当我尝试将其转换为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++;
    }
}

任何帮助都会非常感谢!!!

例如,假设我们有一个字符串数组:

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

要摆脱额外的空格,您可以像这样更改代码:

intarray[i]=Integer.parseInt(str.trim()); // No more Exception in this line

为了帮助调试并改进您的代码,请执行以下操作:

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

另一个简短的方法:

int[] myIntArray = Arrays.stream(myStringArray).mapToInt(Integer::parseInt).toArray();

由于您正在尝试获取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 及更高版本。

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

}

}

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

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*/);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM