例题:函数

本章,我将给大家讲解一下如何用函数来解决简单的问题。

例1:

问题:

编写一个方法,计算一个整数各位数字之和,使用下面的方法头:

    public static int sumDigits(long n)

  例如:sumDigits(234),返回9(2+3+4)。

分析:

    1.首先我们先定义主函数,来接受一个整数,并且调用sumDigits()方法。

     2.我们来设计sumDigits()方法,来计算数字。

     3.sumDigits()返回结果,主函数打印。

代码实现:

import java.util.Scanner;//导入Scanner包来实现用户输入数字
class Text{
    public static void main(String[] args){
        //接收数字
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入一个整数:");
        Long x=scanner.nextLong();
        //调用sumDigits()方法;
        int sum=sumDigits(x);
        System.out.println("结果是:"+sum);
    }
    //sumDigits()方法来实现题意中的算法
    public static int sumDigits(Long n){
        int temp=0;
        while(n>0){
            temp=(int)(temp+n%10);
            n/=10;
        }
        return temp;   //返回值
    }
}

显示结果:

 

例二:

问题:

输出100个回文素数。回文数是指数字反过来与原数字相同,素数是值一个整数只能被1和它本身整除。每打印十个数字,换行。

分析:

1.首先,我们在主函数中用while语句来控制输出100个回文素数,然后在while循环中判断是否为回文素数,若是,则打印出来。

2.第二步,我们定义一个isPrimeNumber()方法,来判断是否为素数,再定义一个isPalindrome()方法来判断是否为回文数。

3.写出isPrimeNumber()   ,  isPalindrome()这两个函数的具体实现代码。

代码实现:

class Text{
    public static void main(String[] args){
        int count=0;   //控制输出100个值
        int i=2;       //从2开始判断
        while(count<=99){        
            if(isPrimeNumber(i)&&isPalindrome(i)){ 
                System.out.printf("%6d",i);
                count++;
                if(count%10==0){
                   System.out.println();
                }
            }
            i++;
        }
    }
    public static boolean isPrimeNumber(int i){
        for(int k=2;k<=i-1;k++){
            if(i%k==0){    //不是素数
                return false;
            }
        }
        return true;
    }
    public static boolean isPalindrome(int n){
        int temp=0;
        int lastn=n;
        while(n>0){
            temp=temp*10+n%10;
            n/=10;
        }
        if(temp==lastn){
            return true;
        }else{
            return false;
        }
    }
}

显示结果:

 

例三:(这道题有些复杂,希望大家认真阅读)

问题:

分析:

1.主函数的代码与上一题相似,知识判断语句变成了isFanSuShu(),判断是否为反素数

2.isFanSuShu()函数中调用了isPrimeNumber(),  isPalindrome(),  reverse()三个函数来判断并返回boolean类型的值给主函数。

3.isPrimeNumber()来判断啊是否为素数,  isPalindrome()来判断是否为回文数,  reverse()来返回反转数字。

代码实现:

class text{
    public static void main(String[] args){
        int count=0;   //控制输出100个值
        int i=2;       //从2开始
        while(count<=99){    
            //判断i是否为非回文数字,若是将其反转,判断是否为素数
            if(isFanSuShu(i)){   //判断是否为反素数
                System.out.printf("%-6d",i);
                count++;
                if(count%10==0){
                    System.out.println();
                }
            }
            i++;
        }
    }
    public static boolean isFanSuShu(int i){  
 //判断是否为反素数。条件:1.是素数 2.反转后也是素数3.不是回文数
         return isPrimeNumber(i)&&isPrimeNumber(reverse(i))&&!isPalindrome(i);
    }
    public static boolean isPrimeNumber(int i){    //判断素数
        for(int k=2;k<=i-1;k++){
            if(i%k==0){    
                return false;
            }
        }
        return true;
    }
    public static boolean isPalindrome(int n){     //判断是否为回文数 
       return reverse(n)==n;
    }
    public static int reverse(int number){     //将数字反转
        int temp=0;
        while(number>0){
            temp=10*temp+(number%10);
            number/=10;
        }
        return temp;
    }
}





显示结果:

 

 

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值