如何计算一个数的非零数的积

import java.util.Scanner;

public class week03 {

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    System.out.println("输入数字:");
    int number =fun(in.nextInt());
    System.out.println(number);
}
/**
 * 获取数字的乘积
 * @param number
 * @return  数字的乘积
 */
public static int fun(int number){
    //判断数字的位数
    int lengthNum = LengthNum(number);
    int  n = 1;//获取的位数
    int  m = 10;//取余
    int num = 1;//存储数字各个位数的乘积
    for(int i=0;i//依次获取数字的位数
        int g = number /n % m;
        n *= 10;
        num *= g;
    }
    return num;
}
/**
 * 判断输入的数字是几位数
 * @param num 输入数字
 * @return 数字的位数
 */
public static int LengthNum(int num){
    int count=0; //计数
    while(num>=1) {
    num/=10;
    count++;
    }
    return count;
}

}
怎么修改可以计算非零数的积

基于Monster 组和GPT的调写:

fun方法中添加一个条件语句来过滤数字的每个位数是否为零,如果不为零,才将其包含在数字的乘积中

public static int fun(int number){
    //判断数字的位数
    int lengthNum = LengthNum(number);
    int n = 1;//获取的位数
    int m = 10;//取余
    int num = 1;//存储数字各个位数的乘积
    for(int i=0;i<lengthNum;i++){
        //依次获取数字的位数
        int g = number /n % m;
        n *= 10;
        if (g != 0) {
            num *= g;
        }
    }
    return num;
}


如果数字的某个位数为零,则不将其包含在数字的乘积中。如果数字中所有位数都为零,则返回数字1,因为任何数字乘以1都等于它本身。

func函数当中,在for循环里,每次判断一下g是否为0,代码如下:

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    System.out.println("输入数字:");
    int number =fun(in.nextInt());
    System.out.println(number);
}
/**
 * 获取数字的乘积
 * @param number
 * @return  数字的乘积
 */
public static int fun(int number){
    //判断数字的位数
    int lengthNum = LengthNum(number);
    int  n = 1;//获取的位数
    int  m = 10;//取余
    int num = 1;//存储数字各个位数的乘积
    for(int i=0;i<lengthNum;i++){
        //依次获取数字的位数
        int g = number /n % m;
        n *= 10;
        if (g > 0 ) {
               num *= g;
          }
    }
    return num;
}
/**
 * 判断输入的数字是几位数
 * @param num 输入数字
 * @return 数字的位数
 */
public static int LengthNum(int num){
    int count=0; //计数
    while(num>=1) {
    num/=10;
    count++;
    }
    return count;
}

输入跟就算的时候都判断下是否为0

 public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.println("输入数字:");
        int number = in.nextInt();
        if(number == 0){
            System.out.println("0的非零数的积为0");
        }else{
            int res = fun(number);
            System.out.println(number + "的非零数的积为:" + res);
        }



    }
    public static int fun(int number){
//判断数字的位数
        int lengthNum = LengthNum(number);
        int n = 1;//获取的位数
        int m = 10;//取余
        int num = 1;//存储数字各个位数的乘积
        for(int i=0;i<lengthNum;i++){
//依次获取数字的位数
            int g = number /n % m;
            if(g != 0){
                num *= g;
            }
            n *= 10;
        }
        return num;
    }
    /**
     * 判断输入的数字是几位数
     * @param num 输入数字
     * @return 数字的位数
     */
    public static int LengthNum(int num) {
        int count = 0; //计数
        while (num >= 1) {
            num /= 10;
            count++;
        }
        return count;
    }