トピックの説明:整数nを入力します。整数の「桁の積」と「桁の合計」の差を計算して、返してください。
- 例えば:
- 入力:234
- 返品:15
- 説明:数字の積= 2 * 3 * 4 = 24
- 数字の合計= 2 + 3 + 4 = 9
- 結果= 24-9 = 15
アイデア:
1。入力し、Scannerクラスの入力オブジェクトを作成し、(nextInt())メソッドを使用して入力整数をint型の数値に保存します。そして、変数、桁の合計(sum)を定義し、0に初期化します。これは、桁の積(result)であり、1に初期化します。
2.数値の各桁を取得する
方法1:whileループを使用して、数値の余りを10にし、最後の桁を取得し、それらを累積して累積し、合計と結果に格納し、10の商を取り、それを数値に割り当てます。 numberが0に等しい場合、ループは終了します。
方法2:int型番号をString型(String.valueOf())に変換し、forループとStringクラスの(charAt())メソッドを使用して、各文字を1つずつ取得しますが、取得した文字を評価することはできません。計算なので、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);
}
}