拆分字符串并将其放在 int 数组中

2022-09-01 05:36:00

我必须输入一个带有数字ex的字符串:1,2,3,4,5。这是输入的一个示例,然后我必须将其放在INT数组中,以便我可以对其进行排序,但不能按照应有的方式工作。

package array;

import java.util.Scanner;

public class Array {

    public static void main(String[] args) {
        String input;
        int length, count, size;
        Scanner keyboard = new Scanner(System.in);
        input = keyboard.next();
        length = input.length();
        size = length / 2;
        int intarray[] = new int[size];
        String strarray[] = new String[size];
        strarray = input.split(",");

        for (count = 0; count < intarray.length ; count++) {
            intarray[count] = Integer.parseInt(strarray[count]);
        }

        for (int s : intarray) {
            System.out.println(s);
        }
    }
}

答案 1

对于输入,输入的长度为 9。 在整数数学中,所以你只存储前四个变量,而不是全部5个变量。1,2,3,4,59/2 = 4

即使你修复了这个问题,如果你传入了10,11,12,13

如果你用于输入,它会工作(偶然),奇怪的是:-)1,2,3,4,50

做这样的事情会更好

String[] strArray = input.split(",");
int[] intArray = new int[strArray.length];
for(int i = 0; i < strArray.length; i++) {
    intArray[i] = Integer.parseInt(strArray[i]);
}

为了将来参考,当您遇到错误时,我强烈建议将其与代码一起发布。您可能没有随时可以使用jdk来编译代码以进行调试!:)


答案 2

Java 8 为手动迭代提供了一种基于流的替代方案:

int[] intArray = Arrays.stream(input.split(","))
    .mapToInt(Integer::parseInt)
    .toArray();

如果输入可能包含无法转换为整数的字符序列,请准备好捕获。NumberFormatException