当前位置: 首页 > 面试题库 >

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

焦正德
2023-03-14
问题内容

假设我有一个字符串“ 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(" ")创建令牌的临时数组,然后分析每个令牌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();
}


 类似资料:
  • 问题内容: 有什么方法可以将null转换为Integer。null实际上是一个字符串,我在我的服务层中传递该字符串,将其接受为整数。因此,每当我尝试将null字符串强制转换为Integer时,都会引发异常。但是我必须将null转换为Integer。 问题答案: 您 不能 从String强制转换为Integer。但是,如果您尝试将字符串转换为整数,并且必须提供处理字符串的实现,请查看以下代码片段:

  • 给我一个字符串“23 45”,我需要得到两个值为23的变量(int a)和值为45的变量(int b)

  • 问题内容: 我在我的项目中遇到了麻烦,因为我无法正确开始,即从用户读取一行用空格隔开的整数并将值放入数组中。 这就是我所拥有的,它似乎只读取数组中的第一个元素,因为初始化count时,出于某种原因将其设置为1。 谁能帮我?以其他方式执行此操作会更好吗? 问题答案: 使您的代码正常工作仅需进行很小的更改。该 错误 是在这一行: 正如我在问题下的评论中指出的那样,它仅读取输入的下一个标记。请参阅文档。

  • 问题内容: 给定一个数字: 将其转换为字符串的“最佳”方法是: 问题答案: 有多种方法: (我的偏爱) (我不知道编译器如何处理它,也许它和上面一样有效)

  • 问题内容: 我有一个逗号分隔的字符串,我想将其转换为数组,因此可以循环遍历它。 有内置的功能吗? 例如,我有这个字符串 现在我想用逗号将其分割,然后将其存储在数组中。 问题答案: MDN参考,主要用于参数可能发生的意外行为。(提示:出来的不是。)

  • 问题内容: 欲分割为4的阵列,以利用 这是我的代码: 但是,结果标记是一个空数组:[],而不是 我想要的4数组。 我已经测试过更改一点: 这次的结果标记为。这与我想要的接近,但是我真的不想在拆分之前添加此“ 1”。 问题基本上是,如果它仅包含空元素,它将返回一个空数组。 您能帮助解决问题吗? 问题答案: 您需要使用带有limit参数的重载方法。 从文档(重点是我的): limit参数控制应用图案的