所以这里的代码是取一个整数并将其每个数字相乘,例如,如果我放入4321
它将4*3*2*1
并且出现为24
。代码可以工作,一切,我的问题是,有人可以解释这个循环如何对我有用。因为我基本上使用了一个骨架来制作这段代码,但有人可以告诉我这个模数如何与*=
和/=
一起工作吗?
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);
}
}
答案 0 :(得分:1)
在我们进入循环之前,您应该了解一些事项:
运算符*=
将值设置为值乘以指定的数字。 *=
是
number = number * number;
例如,
int value = 1;
value *= 3;
System.out.println(value);
将输出3,因为速记符号与
相同int value = 1;
value = value * 3;
System.out.println(value);
运算符/=
将值设置为值除以指定的数值。 /=
是
number = number / number;
重申一下,上面的行与
相同number /= number;
模数运算符%
将值除以指定数值后的余数。
例如,
System.out.println(4 % 3);
输出1,因为4 % 3 == 1 R 1
(第一个意味着我们可以将数字分成一次,R代表余数,最后一个是实际结果为4%3
考虑以下情况...
如果你愿意,你想看看你剩下多少钱:
在这种情况下,支付所有10个人后,剩余部分将是4美元。此方案与
的概念相同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;
此循环一直持续到所有数字都被“切断”并乘以我们的产品
答案 1 :(得分:0)
你基本上想知道%运算符的含义以及while循环的作用。
当整数除以该符号后面的数字时,%(模数运算符)将给出余数。在这种情况下它是10.
以整数为例。让我们说我拿6543.这段代码会做什么?
当循环开始时,6543除以10时的余数为3.所以乘积=乘积* 3。因此,product = 3.现在,6543除以10.由于num是整数,6543/10 = 654。
现在循环将再次开始此号码。剩余时间为4,num将变为65.产品变为12。
它将以同样的方式前进。当num变为0时,循环将停止。
答案 2 :(得分: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("-----------------------------------");
}
}
答案 3 :(得分: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并循环
答案 4 :(得分: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);
}
}
答案 5 :(得分:0)
product *= (num % 10);
相当于:
product = product * (num % 10);
且num /= 10;
为num = num/10;
所以在这里, num%10 有助于从右到左依次获取数字,并且 num / 10 有助于将数字设置为现值的十分之一,直到数字变为0。