拆分String并将其放在int数组中

use*_*331 26 java arrays string int

我必须输入一个带有数字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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

cor*_*iKa 52

对于输入1,2,3,4,5,输入的长度为9,9/2 = 4在整数数学中,因此您只存储前四个变量,而不是全部5个.

即使你修正了它,如果你传入了输入,它也会破坏 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]);
}
Run Code Online (Sandbox Code Playgroud)

为了将来参考,当您收到错误时,我强烈建议您使用代码发布它.您可能没有人可以随时使用jdk编译代码来调试它!:)


And*_*own 20

Java 8提供了基于流的手动迭代替代方法:

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

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

  • 注意对于 Android 开发人员,您还需要最低 SDK 版本 24 以及 Java 8 (4认同)