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

配列を使用するには、事前にサイズを割り当てる必要があるため、を使用することをお勧めしますArrayList。これには、番号の桁数を知る必要がありますが、これはわかりません。

したがって、配列を操作し、数値を 2 回繰り返します。1 回目はサイズを見つけるため、次に実際の作業を行うためです。それ以外の場合は、 で先に進み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

于 2013-02-07T03:50:40.930 に答える
0

Java 8 の場合:

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

于 2017-01-02T05:47:33.780 に答える