2017-04-15 77 views
0

所以這裏的代碼是取一個整數並且將它的每個數字相乘,例如,如果我輸入4321它會做4*3*2*1並且出來是24。代碼工作和一切,我的問題是,有人可以解釋這個循環是如何工作給我的。因爲我基本上使用了一個骷髏來製作這段代碼,但是有人能夠引導我通過這種模數如何與*=/=一起工作嗎?請解釋這個循環請-Java

import java.util.Scanner; 

public class Multiplier { 
    public static void main(String[] args) { 
     int num, product; 
     Scanner scan = new Scanner(System.in); 

     System.out.println("Enter an Integer to be multiplied: "); 
     num = scan.nextInt(); 
     product = 1; 

     while (num > 0) 
     { 
     product *= (num%10); 
     num/=10; 
     } 
     System.out.println("The Product of the Digits is: " +product); 
    } 

} 
+1

不模數,餘數。 'product'乘以'num/10'的餘數*,然後'num'設置爲其當前值的十分之一*。 –

回答

0

您基本上想知道%運算符的含義以及while循環做什麼。

%(模運算符)會在整數除以該符號後面的數字時給出餘數。在這種情況下,它是10.

舉一個整數的例子。可以說我拿6543.這段代碼會做什麼?

當循環開始時,當6543除以10時的餘數爲3.所以乘積=乘積* 3。因此,product = 3。現在,6543除以10.由於num是一個整數,所以6543/10 = 654。

現在循環將再次啓動此號碼。剩餘時間將爲4,數字將變爲65.產品變爲12.

它將採用相同的方式。當num變爲0時,循環將停止。

1

有你應該知道之前我們得到的循環的幾件事情:

  1. *=設定值乘以指定的數字值的運算符。 *=

    number = number * number; 
    

    例如速記符號,

    int value = 1; 
    value *= 3; 
    System.out.println(value); 
    

    將輸出3中,由於簡化符號相同

    int value = 1; 
    value = value * 3; 
    System.out.println(value); 
    
  2. /=值設置爲操作員該值除以指定的數字。 /=

    number = number/number; 
    

    爲了重申速記符號,上面的線是相同的

    number /= number; 
    
  3. 模數運算符%由指定的號碼的值的分割後的值設置爲餘數。

    例如,

    System.out.println(4 % 3); 
    

    將輸出1,因爲4 % 3 == 1 R 1(第一個裝置,我們可以劃分成數一次,R代表餘數,並且最後一個是4%的實際結果3

想想下面的情況......

你想看看你會多少錢已經離開,如果你:

  • 收費十個不同的人$ 100
  • 只有1004 $

在這種情況下,其餘的將是$ 4支付全部10人後。這種情況是相同的概念

int remainder = 1004 % 100; 
System.out.println(remainder); 

我們知道100會進入1000十次,其餘的最終值是4,這是會被打印到控制檯。

好的。現在你明白了這些操作數的作用,看看while循環。

// while our input number is greater than 0 

while(num > 0) { 


// multiply the product by the remainder of number divided by ten 
// (this cuts off the right-most digit of the input number 
// and multiplies it to the product) 

product *= (num%10); 


// what actually sets our input number to number/10. 

num /= 10; 

這個循環繼續,直到所有的數字都被「切斷」,再乘以我們的產品

0
  • %「產生的操作數的其餘部分由一個隱含師」(Remainder Operator
  • *=會將變量更新爲兩個操作數的乘積
  • /=將會將該值更新爲兩個操作數的商

*=/=都是所謂的Compound Assignment Operators。這裏是Java定義它們是如何工作的

首先,評估左手操作數以產生變量。保存左側操作數的 值,然後評估右側 操作數。左側變量的保存值和右側操作數的值用於執行由複合賦值運算符指示的二進制操作數 。 的結果將二進制運算轉換爲左邊的 變量的類型。

這裏是打散多一點明確的步驟

class Operators 
{ 
    static int product = 1; 
    static int num = 25; 

    public static void main(String[] args) 
    { 
     System.out.println("------ [BEFORE MANIPULATION] ------"); 
     System.out.println("product: " + product); 
     System.out.println("num: " + num); 
     System.out.println("-----------------------------------"); 

     int remainder = num % 10; // remainder is equal to 5 (25/10 = 2.5) 
     product *= remainder;  // product is equal to 5 (5 * 1) 
     num /= 10;     // num is equal to 2 (25/10 = 2.5) 

     System.out.println("------ [AFTER MANIPULATION] ------"); 
     System.out.println("remainder: " + remainder); 
     System.out.println("product: " + product); 
     System.out.println("num: " + num); 
     System.out.println("-----------------------------------"); 

    } 
} 
0

模工作由什麼是%後,然後將結果是餘數劃分的NUM。例如,%(mod)b是a/b的餘數。

所以在你的情況下: product = product *(num%10)。

產品是1,次,1234%10,或1234/10餘數是4,

NUM/= 10是簡寫NUM = NUM​​/10,同爲* =,+ = , - = ETC ...

然後它將1234除以10,它是一個整數,它將截斷123。4至123和循環

0
import java.util.Scanner; 

public class Multiply { 
    public static void main(String[] args) { 
     int num, product; 
     Scanner scan = new Scanner(System.in); 

     System.out.println("Enter an Integer to be multiplied: "); 
     num = scan.nextInt(); 
     product = 1; 

     while (num > 0) { 
     // The notation variable += 2 is a common short hand for operations where it says that variable = variable + 2; 

     // The below line could also be written product = product * (num % 10); 
     product *= (num % 10); 
     // The way modulus (the % operator) works is it returns the remainder of division 
     // For example, on the first run of this program the code above would go like so: 
     // product = 1 * (4321 % 10) 
     // product = 1 * (1) 
     // We get a one as the remainder because we are working with integers so when we divide 4321 by 
     // 10 we get 432 with a remainder of 1. The next loop will result in 432 % 10 which will give you a remainder of 2. So on and so fourth. 

     // The below line could also be written num = num/10; 
     num /= 10; 
     } 
     System.out.println("The Product of the Digits is: " +product); 
    } 
} 
1
product *= (num % 10); 

等同於:

product = product * (num % 10); 

num /= 10;num = num/10;

所以在這裏,NUM%10有助於一個從獲得數字一從右到左,並且 num/10有助於將數字設置爲1現值的十分之一,直到數字變爲0.