我对编程非常陌生,但我正在努力提高我作为程序员的技能。目前,我正在研究一个问题,我给自己尝试取一个变量号并使其每个数字成为一个单独的数字。我不关心数字的顺序,所以如果它们被颠倒了,那对我来说无关紧要。我知道人们已多次提出这个问题,但他们似乎总是使用很多我不理解的东西。由于我的学校不提供任何Java课程,我只知道自己学到了什么,所以如果你能解释你在代码中使用的任何非常微不足道的术语,那就太棒了。现在,我写道:
int number = 1234567890;
while (number > 0) {
System.out.println(number%10);
number = number/10;
这适用于单独打印数字,但我无法弄清楚如何将它们添加到数组中。我非常感谢您给予的任何帮助,请记住,我更喜欢简单而不是小尺寸。提前谢谢!
P.S。我在类似问题上看到的一些回复包括我认为的字符串数组。为了使我工作的程序部分仍然有效,我认为我需要使用整数数组。如果你很好奇,剩下的代码用于确定数组中的数字是否都是不同的,以便确定数字的数字是否都是不同的最终结果。它看起来像这样:
int repeats=0;
int[] digitArray;
digitArray = new int[10];
for (int i = 0; i < digitArray.length; i++)
for (int j = 0; j < digitArray.length; j++)
if ((i != j) && (digitArray[i]==digitArray[j])) unique = unique+1;
System.out.println(unique==0);
答案 0 :(得分:8)
方法number.toString()。length()将返回数字位数。这与所需数组的长度相同。然后你像以前一样使用你的代码,而不是打印你将数字添加到数组。
int number = 1234567890;
int len = Integer.toString(number).length();
int[] iarray = new int[len];
for (int index = 0; index < len; index++) {
iarray[index] = number % 10;
number /= 10;
}
答案 1 :(得分:5)
我建议您使用ArrayList
,因为要使用数组,您必须提前分配大小,您需要知道您的号码中的位数,不知道。
因此,要么使用数组,要对数字进行两次迭代 - 一次用于查找大小,另一次用于实际工作。否则,请继续ArrayList
。
向ArrayList
添加元素非常简单。您只需要使用适当的参数调用 - List#add(E)
方法。
所以,这是您的解决方案的扩展: -
// Declare a List<Integer>, since it will store integers only.
List<Integer> digits = new ArrayList<Integer>():
int number = 1234567890;
while (number > 0) {
int digit = number % 10; // Store digit in a variable
number = number/10;
// Add digit to the list
digits.add(digit);
}
或者,如果您希望List
中只包含唯一数字,那么您应该使用HashSet
,这会自动删除重复项。
答案 2 :(得分:0)
使用Java 8:
Integer.toString(n)的.chars()地图(A-&gt;一种 - &#39; 0&#39)。指定者()
答案 3 :(得分:0)
char [] arr = scan.next().toCharArray();
此代码将从scan.next()
读取一个数字,然后它将作为char
数组的输入,将其索引处的数字作为单个数字逐位。
希望这会有所帮助。