2

私は太字のビットについて混乱しています。それは正確には何を意味し、解決策を見ずにどのようにこれを理解したのでしょうか? コードは機能しますが、太字のビットがわかりません。

public int sumOfDigits(int n)
{
    int sum = 0;
    n = Math.abs(n); //removes the minus sign from a negative integer
    while (n > 0)
    ***{
        sum += n % 10; //???????????????????????????????????????xplo
        n /= 10;
    }***
    return sum;
}

public void inputAndProcess()
{
    int n = 0;
    Input in = new Input();
    while (true) 
    { 
        System.out.print("Type an integer: ");
        if (in.hasNextInt()) 
        { 
            n = in.nextInt(); 
            break;
        }
        in.nextLine(); 
        System.out.println("You did not type an integer, try again."); 
    }
    System.out.print("The sum of the digits of " + n); 
    System.out.println(" is: " + sumOfDigits(n)); 
}   

public static void main(String[] args)
{
    new Example1_1().inputAndProcess();
}

選択したビットを太字にすることはできませんが、それは*で覆われたコードの一部であり、これらの種類の古風なコードをより良くするためのヒントはありますか?

4

3 に答える 3

1
while (n > 0)
    ***{
        sum += n % 10; //???????????????????????????????????????xplo
        n /= 10;
    }***

ここで起こっているのは、合計が n を 10 で割った後の残りの現在の累積合計です (% 演算子はモジュラスであり、2 つの整数を除算した後の残りです)。

整数 123 の場合:

n の最初の反復後: sum の値は 3 です (123 / 10 の剰余が 3 であるため)。n は 123 を 10 で割り、次の反復のために int 値が n にロードされるため、12 になります。

n の 2 回目の反復後: sum の値は 2+3 です (12 / 10 の剰余が 2 であるため)。n は 12 を 10 で除算するため 1 になり、次の反復のために int 値が n にロードされます。

n の 3 回目の反復後: sum の値は 1+2+3 です (1/10 の剰余が 1 であるため)。1 を 10 で割り、次の反復のために int 値が n にロードされるため、n は 0 になります。

于 2013-03-13T01:47:40.340 に答える
1

% 10基本的に、指定された数値を 10 で割ったときの余りをテストします。これは、数値から最後の桁を取得する方法です。の値を、元の値と 10 の間の整数除算の結果にn /= 10置き換えます。整数除算とは、数値が除算されることを意味しますが、小数部分は削除されます。たとえば、12 です。このコンテキストでは、最後の桁を削除するために使用されます。整数の。n128 / 10

于 2013-03-13T01:47:46.097 に答える
0

数値を入力すると、一度に 1 桁ではなく、整数値として解釈されます。したがって、強調表示したコードは、基本的に、10 で modding してから 10 で割ることにより、一度に 1 桁ずつ取得します。

たとえば、321 と入力すると、321 % 10 = 1 と計算され、321 を 10 で割ると 32 になります。次に、32 % 10 = 2 で、32 を 10 で割ると 3 になります。最後の桁の値を計算し、10 で割ると桁が取り除かれます。

すべての数字 (この場合は 1、2、および 3) を取得したら、それらを単純に足し合わせることができます。

それは私がそれを説明した方法に意味がありますか?

于 2013-03-13T01:47:19.357 に答える