如何在 java 中将 Int 转换为 Int[]?
Posted
技术标签:
【中文标题】如何在 java 中将 Int 转换为 Int[]?【英文标题】:How do I convert an Int to an Int[] in java? 【发布时间】:2021-01-27 04:29:56 【问题描述】:我想转换一个原始的 Java 整数值:
int myInt = 4821;
到一个整数数组:
int[] myInt = 4, 8, 2, 1;
【问题讨论】:
提示:%10 提取最后一个数字,/10 删除最后一个数字。还要考虑如果数字为负数会发生什么。 【参考方案1】:使用 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));
【讨论】:
【参考方案2】: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
【讨论】:
@Bathsheba 在划分之前你将如何声明和数组?因为 OP 听起来很新,所以我不想使用使用数组列表或集合的概念 你需要对数字进行两次解析:一次计算长度,第二次提取数字。 不,不需要使用字符串。你还没有处理初学者的负面因素。计算数字中的位数是一个简单的“除以 2 的幂”问题。 当你有字符串时比便宜的是 (char - 48) 这对我来说已经足够了。 DV 转换为 UV。无论如何,“以二的幂除”可能是矫枉过正。【参考方案3】:有很多方法可以做到这一点。一个简洁的方法是使用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
返回 int
值的绝对值
例如Math.abs(-5) = 5
和 Math.abs(5) = 5
【讨论】:
【参考方案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]);
【讨论】:
如果您打算这样做,请使用charAt
而不是substring
。以上是关于如何在 java 中将 Int 转换为 Int[]?的主要内容,如果未能解决你的问题,请参考以下文章