java - JAVA中如何将以空格分隔的整数字符串转换为数组

标签 java arrays string

假设我有一个字符串“1 23 40 187 298”。该字符串仅包含整数和空格。如何将此字符串转换为整数数组,即 [1,23,40,187,298]。 我就是这样尝试的

public static void main(String[] args) {
    String numbers = "12 1 890 65";
    String temp = new String();
    int[] ary = new int[4];
    int j=0;
    for (int i=0;i<numbers.length();i++)
    {

        if (numbers.charAt(i)!=' ')
            temp+=numbers.charAt(i);
        if (numbers.charAt(i)==' '){
            ary[j]=Integer.parseInt(temp);
            j++;
        }
    }
}

但是它不起作用,请提供一些帮助。谢谢!

最佳答案

你忘了

  • 在解析后将 temp 重置为空字符串以创建新数字的位置
  • 你的字符串末尾没有空格,所以

    if (numbers.charAt(i) == ' ') {
        ary[j] = Integer.parseInt(temp);
        j++;
    }
    

    不会被调用,这意味着你需要调用

    ary[j] = Integer.parseInt(temp);
    

    在你的循环之后再次


但更简单的方法是使用 split("") 创建临时的 token 数组,然后将每个 token 解析为 int 就像

String numbers = "12 1 890 65";
String[] tokens = numbers.split(" ");
int[] ary = new int[tokens.length];

int i = 0;
for (String token : tokens){
    ary[i++] = Integer.parseInt(token); 
}

也可以通过 Java 8 中添加的流来缩短:

String numbers = "12 1 890 65";
int[] array = Stream.of(numbers.split(" "))
                    .mapToInt(token -> Integer.parseInt(token))
                    .toArray();

其他方法可能是使用 Scanner 及其 nextInt() 方法从您的输入中返回所有整数。假设您已经知道所需数组的大小,您可以简单地使用

String numbers = "12 1 890 65";
int[] ary = new int[4];

int i = 0;
Scanner sc = new Scanner(numbers);
while(sc.hasNextInt()){
    ary[i++] = sc.nextInt();
}

关于java - JAVA中如何将以空格分隔的整数字符串转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29219418/

相关文章:

java - 如何打印返回数组的方法?

php - 将 PHP 对象图序列化/反序列化为 JSON

c++ - 如何将大整数从字符串转换为 uint64_t?

string - 字符串中的Golang rune 或如何转换?

javascript - 如何在 Javascript 中从 JSON 格式获取数组?

c# - 从C#到C++的编码字符串

java - 删除循环链表中的第一个元素

java - 根据特定特征对随机整数数组进行计数或过滤

java - Mockito:抛出指定的已检查异常时为 "Checked exception is invalid for this method"

java - 如果需要但不在范围内,枚举的值是多少?