没有第二个数组的字符串到整数数组

时间:2012-05-17 11:26:20

标签: java arrays split java.util.scanner

我输入一个String,它是一组在它们之间有空格的数字,例如:

"30 129 48 29 110 90"

我想要做的是获取该String并将其作为整数输入到数组中,而不首先使用将数字存储为字符串的第二个数组。这就是我所知道的:

String line = input.nextLine();
String[] arr = line.split(" ");
int[] array = new int[arr.length];


for (int i = 0; i < arr.length; i++){
    array[i] = Integer.parseInt(arr[i]);
}

我想不要让两个数组完成这项工作,但是在某种程度上让它在for循环中一次完成,我只是想这样,因为它对我的眼睛更好,我喜欢编写干净的代码我以后可以轻松纠正。

编辑:在jogabonito回答之后,这就是我设法做的事情

Scanner input = new Scanner(System.in);

    System.out.printf("Input: ");

    StringTokenizer line = new StringTokenizer(input.nextLine());
    int[] numbers = new int[line.countTokens()];


    for (int i = 0; line.hasMoreTokens(); i++){
        numbers[i] = Integer.parseInt((String)line.nextElement());
    }

4 个答案:

答案 0 :(得分:4)

您当前的方法很好,但如果您希望您“可以”使用StringTokenizer执行此操作。 创建一个由countElements()确定的大小的int [],然后在while -loop中创建一个Integer.parseInt(tokenizer.nextElement())

经过测试的代码:

    String input = "30 129 48 29 110 90";
    StringTokenizer tokenizer = new StringTokenizer(input);
    int count = tokenizer.countTokens();
    int x[] = new int[count];
    int i=0;
    while (tokenizer.hasMoreElements()) {
        x[i++] = Integer.parseInt((String)tokenizer.nextElement());
    }

答案 1 :(得分:1)

您可以使用Scanner

Scanner sc = new Scanner(System.in);
while sc.hasNextInt()
   int i = sc.nextInt();

我不知道它是否更具可读性,或者即使性能更好。但它肯定是另一种方式。而且你无法预先知道有多少总数,所以你需要使用一个列表。

答案 2 :(得分:1)

您确定要使用数组而不是Collection吗?

我认为有以下几点

String input = "30 129 48 29 110 90";
List<Integer> list = new ArrayList<Integer>();

for (String token: input.split(" ")) {
    list.add( Integer.valueOf( token ) );
}

您当然可以将列表转换为数组:

Integer[] array = list.toArray( new Integer[] {} );

答案 3 :(得分:0)

  

我只是想要它,因为它对我的眼睛会更好,我喜欢编写干净的代码,以后我可以轻松纠正。

在这种情况下,不要改变一件事。你拥有的东西可能是可读的。