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;
}
}
怎么修改可以计算非零数的积
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;
}
直接来看个例子,最经典的就是一个add函数的实现了,它将所有参数加在一起:
template <typename T>
T add(T value)
{
return value;
}
template <typename T, typename... Ts>
T add(T head, Ts... rest)
{
return head + add(rest...);
}
当你写下如下的两个调用时:
auto test1 = add(1,2,3,4,5);
auto test2 = add("what's"s, " up"s, "!"s);
std::cout << test1 << std::endl;
std::cout << test2 << std::endl;
它会输出:
15
what's up!