Java 将任意数字转换为一位数
考虑数字2345。如果你把它的数字相乘,那么你就得到了数字120。现在如果你再把120的数字相乘,那么你就会得到0,这是一个数字Java 将任意数字转换为一位数,java,Java,考虑数字2345。如果你把它的数字相乘,那么你就得到了数字120。现在如果你再把120的数字相乘,那么你就会得到0,这是一个数字 import java.util.Scanner; public class SmallestNum { int prod=1,sum=0; void product(int m) { while(m!=0) { int a=m%10; m=m/1
import java.util.Scanner;
public class SmallestNum
{
int prod=1,sum=0;
void product(int m)
{
while(m!=0)
{
int a=m%10;
m=m/10;
prod=prod*a;
}
System.out.println(prod);
}
public static void main(String args[])
{
Scanner scn=new Scanner(System.in);
int x=scn.nextInt();
SmallestNum sn=new SmallestNum();
sn.product(x);
}
}
我可以从这个代码中得到120。但是我如何才能用120执行相同的过程并得到答案0。请帮助我。您可以在while周围添加另一个循环,结束条件是
prod<10
,即只有一个数字
void product(int m)
{
int prod;
do {
prod = 1;
while(m!=0)
{
int a = m%10;
m = m / 10;
prod *= a;
}
System.out.println(prod);
} while (prod >= 10);
}
使用递归
void product(int m)
{
if(m%10 == 0){
return;
}
while(m!=0)
{
int a=m%10;
m=m/10;
prod=prod*a;
}
System.out.println(prod);
product(prod);//repeat the procedure
}
所以基本上是:将你输入的数字相乘。如果结果有多个数字(因此结果大于9,至少为10),则递归调用该结果的方法
或者,使用do while循环执行相同操作,而不使用递归:
public int reduceToOneDigitNoRecursion(int inputNumber){
int result = 1;
do{
while(inputNumber > 0){
result *= (inputNumber % 10);
inputNumber /= 10;
}
}
while(result > 9);
return result;
}
递归调用函数
if(String.valueOf(prod).length()>1){
product(prod)
}
完整代码
public class SmallestNum
{
int prod=1,sum=0;
void product(int m)
{
while(m!=0)
{
int a=m%10;
m=m/10;
prod=prod*a;
}
if(String.valueOf(prod).length()>1){
product(prod)
}
System.out.println(prod);
}
public static void main(String args[])
{
Scanner scn=new Scanner(System.in);
int x=scn.nextInt();
SmallestNum sn=new SmallestNum();
sn.product(x);
}
}
使成员函数产品返回整数,然后代替序号产品(x)
使用相同函数的递归直到numbert.toString().lenght()==1如果在do while循环中初始化prod,则每次迭代都会将其值重置为1。我相信您应该在进入任何循环之前初始化prod。此代码不起作用。我需要这种类型的输出。2467=2*4*6*7=336 336=3*3*6=54 54=5*4=20 20=2*0=0
public class SmallestNum
{
int prod=1,sum=0;
void product(int m)
{
while(m!=0)
{
int a=m%10;
m=m/10;
prod=prod*a;
}
if(String.valueOf(prod).length()>1){
product(prod)
}
System.out.println(prod);
}
public static void main(String args[])
{
Scanner scn=new Scanner(System.in);
int x=scn.nextInt();
SmallestNum sn=new SmallestNum();
sn.product(x);
}
}
int p = sn.product(x);
while (p > 9)
{
p = sn.product(t);
}