java - Java转换double到 int array

  显示原文与译文双语对照的内容
61 0

我有双双

double pi = 3.1415;

我想将它转换为 int array

int[] piArray = {3,1,4,1,5};

我找到了这个

double pi = 3.1415;
String piString = Double.toString(pi).replace(".","");
int[] piArray = new int[piString.length()];
for (int i = 0; i <= piString.length()-1; i++)
 piArray[i] = piString.charAt(i) - '0'; 

但是我不喜欢这个解决方案,因为我认为数据类型之间的转换可以能会导致错误。我的代码甚至完成了还是需要检查其它内容?

你会如何解决这个问题?无法在这里找到有关 Java stackoverflow的类似问题。

时间:原作者:0个回答

120 3

我不知道stright的方法但我觉得它更简单一些:

int[] piArray = String.valueOf(pi).replaceAll("D","").chars().map(Character::getNumericValue).toArray();
原作者:
88 4
int[] result = Stream.of(pi)
. map(String::valueOf)
. flatMap(x -> Arrays.stream(x.split(".|")))
. filter(x ->!x.isEmpty())
. mapToInt(Integer::valueOf)
. toArray();

或者使用 java-9的更安全的方法:

 int[] result = new Scanner(String.valueOf(pi))
. findAll(Pattern.compile("d"))
. map(MatchResult::group)
. mapToInt(Integer::valueOf)
. toArray();
原作者:
107 5

你可以以在 java 8中使用

int[] piArray = piString.chars().map(Character::getNumericValue).toArray();
原作者:
...