如何将 Int 转换为 java 中的 Int[]?
How do I convert an Int to an Int[] in java?
我想转换原始 Java 整数值:
int myInt = 4821;
到整数数组:
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);
}
}
输出
Number : 1
Number : 2
Number : 8
Number : 4
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]);
可以有很多方法来做到这一点。一种简洁的方法是使用 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 char into numeric value
.toArray(); // Convert the stream into array
// Display the array
System.out.println(Arrays.toString(arr));
}
}
输出:
[4, 8, 2, 1]
备注:
- ASCII value of
'0'
是48
,'1'
是49
,依此类推
Math#abs
returns 一个 int
值的绝对值
- 例如
Math.abs(-5) = 5
和 Math.abs(5) = 5
以下 简单的单行解决方案 的代码使用 Java 8+ 和 Stream
和 mapToInt
:
Stream.of(String.valueOf(myInt).split("")).mapToInt(Integer::parseInt).toArray();
通用解决方案:
import java.util.stream.Stream;
public static int[] convertValueToIntegerArray(int value) {
return Stream.of(String.valueOf(value).split(""))
.mapToInt(Integer::parseInt)
.toArray();
}
示例:
import java.util.Arrays;
public void testIntegerArray() {
int myInt = 4821;
int[] myIntArr = convertValueToIntegerArray(myInt);
System.out.println("Converted: " + Arrays.toString(myIntArr));
}
我想转换原始 Java 整数值:
int myInt = 4821;
到整数数组:
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);
}
}
输出
Number : 1
Number : 2
Number : 8
Number : 4
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]);
可以有很多方法来做到这一点。一种简洁的方法是使用 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 char into numeric value
.toArray(); // Convert the stream into array
// Display the array
System.out.println(Arrays.toString(arr));
}
}
输出:
[4, 8, 2, 1]
备注:
- ASCII value of
'0'
是48
,'1'
是49
,依此类推 Math#abs
returns 一个int
值的绝对值- 例如
Math.abs(-5) = 5
和Math.abs(5) = 5
- 例如
以下 简单的单行解决方案 的代码使用 Java 8+ 和 Stream
和 mapToInt
:
Stream.of(String.valueOf(myInt).split("")).mapToInt(Integer::parseInt).toArray();
通用解决方案:
import java.util.stream.Stream;
public static int[] convertValueToIntegerArray(int value) {
return Stream.of(String.valueOf(value).split(""))
.mapToInt(Integer::parseInt)
.toArray();
}
示例:
import java.util.Arrays;
public void testIntegerArray() {
int myInt = 4821;
int[] myIntArr = convertValueToIntegerArray(myInt);
System.out.println("Converted: " + Arrays.toString(myIntArr));
}