简体   繁体   English

如何在java中将Int转换为Int[]?

[英]How do I convert an Int to an Int[] in java?

I want to convert a primitive Java integer value:我想转换一个原始的 Java 整数值:

int myInt = 4821;

To an integer array:对于整数数组:

int[] myInt = {4, 8, 2, 1};
public static void main(String[] args) {
    int myInt = 4821;
    int size = 0;
    int temp = myInt;
    while(temp > 0) {
        temp = temp/10;
        size++;
    }
    int[] numbers = new int[size];
    
    int index = 0;
    while(myInt > 0) {
        numbers[index] = myInt % 10;
        myInt = myInt / 10;
        index++;
    }
    for (int i : numbers) {
        System.out.println("Number : "+i);
    }
}

output输出

Number : 1
Number : 2
Number : 8
Number : 4

Following code for a simple one line solution using Java 8+ with Stream and mapToInt :以下代码用于使用Java 8+StreammapToInt简单单行解决方案

Stream.of(String.valueOf(myInt).split("")).mapToInt(Integer::parseInt).toArray();

Generic solution:通用解决方案:

import java.util.stream.Stream;

public static int[] convertValueToIntegerArray(int value) {
    return Stream.of(String.valueOf(value).split(""))
                 .mapToInt(Integer::parseInt)
                 .toArray();
}

Example:例子:

import java.util.Arrays;

public void testIntegerArray() {
    int myInt = 4821;
    int[] myIntArr = convertValueToIntegerArray(myInt);
    System.out.println("Testing Integer Array converted: " + Arrays.toString(myIntArr));
}

There can be so many ways to do it.可以有很多方法来做到这一点。 A concise way of doing it is by using Stream API as shown below:一种简洁的方法是使用Stream API,如下所示:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int myInt = 4821;
        int[] arr = 
            String.valueOf(Math.abs(myInt)) // Convert the absolute value to String
            .chars()                        // Get IntStream out of the String
            .map(c -> c - 48)               // Convert each character digit into numeric value
            .toArray();                     // Convert the stream into array

        // Display the array
        System.out.println(Arrays.toString(arr));
    }
}

Output:输出:

[4, 8, 2, 1]

Notes:笔记:

  1. ASCII value of '0' is 48 , that of '1' is 49 and so on. '0' ASCII 值48'1' ASCII 值49等等。
  2. Math#abs returns the absolute value of an int value eg Math.abs(-5) = 5 and Math.abs(5) = 5 Math#abs返回int值的绝对值,例如Math.abs(-5) = 5Math.abs(5) = 5
int myInt = 4821;
String myIntText = myInt+ ""; //Implicit cast to String
    
Integer[] numberArray = new Integer[myIntText.length()]; //Create Array for result
for(int i=0; i<myIntText.length(); i++) {
    String number = myIntText.substring(i, i+1);  //Extract every number from left to right
    numberArray[i] = Integer.valueOf(number); //save the number in the array
}
for(int i = 0; i<myIntText.length(); i++) 
    System.out.println(numberArray[i]);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM