题目描述:输入一个整数 n,请计算并返回该整数「各位数字之积」与「各位数字之和」的差
- 例如:
- 输入:234
- 返回:15
- 解释:各位数之积 = 2 * 3 * 4 = 24
- 各位数之和 = 2 + 3 + 4 = 9
- 结果 = 24 - 9 = 15
思路:
1.输入,创建一个Scanner类的input对象,用(nextInt())方法将输入的整数保存至int类型的number中。并定义变量,各位数字之和(sum)并初始化为0,各位数字之积(result)并初始化为1。
2.获取number中的每一位数字
方式1:利用while循环,将number对10取余,获得最后一位数,进行累加和累积并存入sum和result,对10取商再赋值给number,当number等于0时,循环结束。
方式2:将int类型的number转换成String类型(String.valueOf()),利用for循环及String类中的(charAt( ))方法,逐一获取每个字符,但获取出来的字符不能进行值的计算,所以我们需要将char先转换成String(String.valueOf()),再转换成int类型(Integer.parseInt())进行累加和累积。
3.求差并输出
代码如下:
import java.util.Scanner;
public class Test01 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入一个整数:");
int number=input.nextInt();
int sum=0,result=1;
//方式1:
// while(number!=0){
// int n=number%10; //获取当前整数的个位数字
// System.out.println(n);
// sum+=n; //累加
// result*=n; //累积
//
// number/=10;
// }
//方式2:
//将int类型的整数,转换成String类型的字符串
String strNumber=String.valueOf(number);
//逐个获取字符串中的每个字符
for(int i=0;i<strNumber.length();i++){
//获取当前字符
char c=strNumber.charAt(i);
// 字符 => 字符串 => 整型
String s=String.valueOf(c);// 字符 => 字符串
int n=Integer.parseInt(s);//字符串 => 整型
sum+=n;//累加
result*=n;//累积
}
System.out.println(result-sum);
}
}