3

私は学校の課題に取り組んでいるので、何が間違っているのかについてのガイダンスを探しています. これはより大きなプログラムの一部ですが、残りのプログラムを実装する前にループで作業しようとしています。基本的に、私のループはすべての数値を反復処理してから、他のすべての数値を追加することを想定しています。次に例を示します。

入力した数値が 48625 の場合は、5+6+4 の合計を返します。ループを if ステートメントと組み合わせて n 番目の数値を反復処理する必要があると考えたので、これまでのところ次のように解決しました。

class testLoop{

    public static void main (String args[]){

        int num = 12345;
        int sum = 0;

        for(int i = 0; num > 0; i++)
        {
            if(i%num == 0)
            {
                sum += num % 10;
            }

            num /= 10;

        System.out.println(sum);
    }
    }

}

残念ながら、これは機能していません。6,5,5,5,5 を返します。計画どおりに n 番目の値を追加していません。

私も次のことを試しました:

int num = 12345;
int sum = 0;

while(num > 0) {
    sum += num % 10;
    num /= 10;
}

しかし、それも機能せず、基本的に変数 num のすべての桁の合計である 15 が返されました。私は解決策に近づいていることを知っています。それは私の2つのコードの間のどこかにありますが、正しく理解できないようです。

4

3 に答える 3

5

単純に 100 で割ります。これにより、偶数がスキップされます。

int num = 12345;
int sum = 0;

while(num > 0) {
    sum += num % 10;
    num /= 100;
}
于 2013-07-24T02:03:08.313 に答える
4
int num = 12345;
int sum = 0;
int pos = 0;
while(num > 0) {
    int digit = num % 10;    // make it really blatantly clear what the DIGIT is
    if (pos % 2 == 0)
      sum += digit;
    num /= 10;
    pos++;
}

桁の半分をスキップしていることを確認するためのチェック メカニズムが必要でした。[数字ではなく数字の数字を追加しようとしています。編集者。]

これにより、最初の解決策も修正されます。

if(i%2 /*not num*/ == 0)
于 2013-07-24T01:59:08.863 に答える
1
int num = 12345;
int sum = 0;
String str = String.valueOf(num);
for (int i = str.toCharArray().length - 1, j = 0; i >= 0; i--, j++) {
    if (j % 2 == 0) {
        int number = Character.digit(str.charAt(i), 10);
        sum += number;
    }
}
System.out.println(sum);
于 2013-07-24T02:07:46.230 に答える