7

我对编程非常陌生,但我正在努力提高我作为程序员的技能。目前,我正在解决我给自己的一个问题,我试图获取一个可变数字并将其每个数字作为数组中的单独数字。我不在乎数字的顺序,所以如果它们颠倒了,那对我来说就没有关系了。我知道人们已经多次问过这个问题,但他们似乎总是使用很多我不明白的东西。由于我的学校不提供任何 Java 课程,我只知道我自己学到的东西,所以如果你能解释你在代码中使用的任何不是非常琐碎的术语,那就太好了。现在,我已经写了:

int number = 1234567890;
    while (number > 0) {
        System.out.println(number%10);
        number = number/10; 

这适用于单独打印数字,但我不知道如何将它们添加到数组中。我非常感谢您提供的任何帮助,请记住,我更喜欢简单而不是小尺寸。先感谢您!

PS 我看到的一些类似问题的回答包括我认为的字符串数组。为了让我正在工作的程序部分仍然可以工作,我认为我需要使用一个整数数组。如果你好奇的话,剩下的代码就是用来判断数组中的数字是否全不相同,以达到判断一个数字的位数是否全不同的最终结果。它看起来像这样:

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);
4

4 回答 4

9

方法 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;
}
于 2013-02-07T03:52:17.130 回答
5

我宁愿建议您使用 an ArrayList,因为要使用数组,您必须提前分配大小,为此您需要知道数字中的位数,而您不知道。

因此,要么使用数组,然后对数字进行两次迭代——一次用于查找大小,下一次用于实际工作。否则,继续前进ArrayList

向 an 添加元素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,那么您应该使用 a HashSet,它会自动删除重复项。

于 2013-02-07T03:50:40.930 回答
0

使用 Java 8:

Integer.toString(n).chars().map(a->a-'0').toArray()

于 2017-01-02T05:47:33.780 回答
0
char [] arr = scan.next().toCharArray();

此代码将从中读取一个数字scan.next(),然后将其作为输入提供给char数组,该数组将在其索引处以单个数字为单位的数字。

希望这会有所帮助。

于 2017-07-16T16:49:38.730 回答