Java函数习题总结

4.1(求一个整数各位数字之和)编写一个方法,计算一个整数各位数字之和。使用下面的方法头:
pub1ic static int SumDigits (long n)

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

提示:使用求余操作符%提取数字,用除号/去掉提取出来的数字。例如:使用234%10(=4)抽取4。然后使用234/10(=23)从234中去掉4。使用一个循环来反复提取和去掉每位数字,直到所有的位敏都提取完为止。
编写程序提示用户输入一个整数,然后显示这个整数所有数字的和。

import java.util.Scanner;
class Demo04_01{
    public static void main(String[] args){
        //1.先输入一个数字
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入一个数字:");
        long num=scanner.nextLong();
        //2.调用sumDigits()函数将num拆分求和
        int sum=sumDigits(num);
        System.out.println(sum);
    }
    public static int sumDigits(long n){
        int sum=0;
        while(true){
            sum+=n%10;
            n/=10;
            if(n==0){
                return sum;
            }
        }
    }
}

4.2(回文整数)使用下面的方法头编写两个方法:
//Return the reversal of an integer,1.e.,reverse(456) returns 654
public static int reverse(int number)
//Return true if number is a pa1indrome
public static boolean isPalindrome (int number)

 
使用reverse方法实现isPal1indrome。如果一个数字的反向倒置数和它的顺向数一样,这
个数就称作回文数。编写一个测试程序,提示用户输人一个整数值,然后报告这个整数是否是回
文数。

import java.util.Scanner;
class Demo04_02{
    public static void main(String[] args){
        //1.提示用户输入一个数字
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入一个数字:");
        int num=scanner.nextInt();
        //2.判断该数字是否是一个回文
        if(isPalindrome(num)){  //调用isPalindrome()函数返回布尔型值进行判断
            System.out.println("是回文");
        }else{
            System.out.println("不是回文");
        }
    }
    public static boolean isPalindrome(int num){
        //1.先计算该数字的反序
        //2.对比反序的数字和数字本身
        return reverse(num)==num; //调用reverse()函数计算数字反序
    }
    //计算数字反序的函数
    public static int reverse(int num){
        int sum=0;
        while(true){
            sum=sum*10+num%10;
            num/=10;
            if(num==0){
                return sum;
            }
        }
    }
}

4.3(显示图案)编写方法显示如下图案:

public static void displayPattern (in n)

import java.util.Scanner;
class Demo04_03{
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        System.out.print("请输入行数:");
        displayPattern(scanner.nextInt());//直接将输入的数字传入displayPattern()函数调用
    }
    public static void displayPattern(int line){
        //两层for循环分别打印出空格和数字
        for(int i=1;i<=line;i++){
            for(int k=1;k<=line-i;k++){
                if(line<10){
                    System.out.print("  ");
                }else{
                    System.out.print("   ");
                }
            }
            for(int j=i;j>=1;j--){
                if(line<10){
                    System.out.printf("%-2d",j);
                }else{
                    System.out.printf("%-3d",j);
                }
            }
            System.out.println();
        }
    }
}

4.4检测密码

import java.util.Scanner;
class Demo04_04{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.print("请输入一个密码:");
        String key = input.nextLine();//输入一个密码
        isValidPassword(key); //调用该函数判断是否是符合标准
    }
    public static void isValidPassword(String key){
        if(isEightChar(key)&&isOnlyLetterAndNum(key)&&isLeastTwoNum(key)){//同时符合这三个条件,则输出正规
            System.out.print("Valid Password");
        }
        else{
            System.out.print("Invalid Password");
        }
    }
    public static boolean isEightChar(String key){
        if(key.length()<8){//判断密码长度是否小于8位
            return false;
        }
        else{
            return true;
        }
    }
    public static boolean isOnlyLetterAndNum(String key){
        for(int i=0;i<=key.length()-1;i++){//判断密码是否仅仅由数字字母组成
            if(!Character.isLetter(key.charAt(i))&& !Character.isDigit(key.charAt(i))){
                return false;
            }
        }
        return true;
    }
    public static boolean isLeastTwoNum(String key){
        int count=0;
        for(int i=0;i<=key.length()-1;i++){
            if(Character.isDigit(key.charAt(i))){
                count++;
            }   
        }
        if(count>=2)//判断数字的个数是都大于等于2个
            return true;
        else
            return false;
    }
}

4.5

(数学:平方根的近似求法)有几种实现Math类中sqrt方法的技术。其中一个称为巴比伦法。
它通过使用下面公式的反复计算近似地得到:
nextGuess=(lastGuess+n/lastGuess)/2

当nextCuess和1astGuess儿乎相同时,nextCuess就是平方根的近似值。最初的猜测值可以是任意一个正值(例如1。这个值就是1astGuess的初始值。如果nextGuess和1astGuess的差小于一个很小的数,比如0.0001,就可以认为nextGuess是n的平方根的近
似值;否则,nextCGuess就成为lastGuess,近似过程继续执行。实现下面的方法,返回n的平方根。

public static double sqrt(long n)

import java.util.*;
class Demo04_05{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        long n = input.nextLong();
        sqrt(n);//将输入的n值传入sqrt()函数并调用;
        }
    public static double sqrt(long n){
        double lastGuess=1,nextGuess=0,temp;//初始化lastGuesss,nextGuess,声明temp
        while(n>=0){
          nextGuess = (lastGuess+ n / lastGuess) / 2;
          if((float) nextGuess == (float) lastGuess){//当两者之间的误差很小时跳出循环
            System.out.print("n的平方根为:"+nextGuess);
            break;
          }else
          //以下三行代码用于交换值。
          temp = nextGuess;
          nextGuess = lastGuess;
          lastGuess = temp;
        }
        return nextGuess;
    }   
}

4.6

回文素数

class Demo04_06{
    public static void main(String[] args){
        int count=0;    //表示回文素数的个数
        int num=2;      //表示可能的回文素数的数字 从2开始
        while(true){
            //如果num是 回文素数
            if(isHuiWenAndSuShu(num)){
                count++;
                System.out.print(num+" ");
                if(count%10==0){
                    System.out.println();
                }
            }
            if(count==100){
                break;
            }
            num++;
        }
    }
    //判断是否是回文素数,是返回true,不是返回false
    public static boolean isHuiWenAndSuShu(int num){
        return isHuiWen(num)&&isSuShu(num);
    }
    public static boolean isHuiWen(int num){
        return reverse(num)==num;
    }
    //计算回文数字的函数
    public static int reverse(int num){
        int sum=0;
        while(true){
            sum=sum*10+num%10;
            num/=10;
            if(num==0){
                return sum;
            }
        }
    }
    //计算是否是素数。
    public static boolean isSuShu(int num){
        for(int i=2;i<=num/2;i++){
            if(num%i==0){
                return false;
            }
        }
        return true;
    }
}

4.7反素数

class Demo04_07{
    public static void main(String[] args){
        int count=0;
        int num=2;
        while(true){
            if(isFanZhuanSuShu(num)){
                count++;
                System.out.print(num+" ");
                if(count%10==0){
                    System.out.println();
                }
            }
            if(count==100){
                return; //结束当前函数
            }
            num++;
        }
    }
    //1.本身是素数
    //2.反转之后也是素数
    //3.不能是回文
    //素数()  反转() 回文功能()
    public static boolean isFanZhuanSuShu(int num){
        return isSuShu(num)&&isSuShu(reverse(num))&&!isHuiWen(num);三者全部满足则是所求
    }
    //实现回文功能的函数
    public static boolean isHuiWen(int num){
        return reverse(num)==num;
    }
    //判断素数的函数
    public static boolean isSuShu(int num){
        for(int i=2;i<=num/2;i++){
            if(num%i==0){
                return false;
            }
        }
        return true;
    }
    //实现反转数字的函数
    public static int reverse(int num){
        int sum=0;
        while(true){
            sum=sum*10+num%10;
            num/=10;
            if(num==0){
                return sum;
            }
        }
    }
}

4.8指定字符出现的次数

import java.util.Scanner;
class Demo04_08{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个字符串 以及该字符串的一个字符:");
        String str = input.nextLine();//输入一个字符串
        //以下两句代码是输入一个字符的格式
        String s = input.next();
        char ch = s.charAt(0);

        int result = count(str,ch);//接受count返回字符在字符串中出现的次数
        System.out.print(ch+"出现了"+ result+"次");    
    }
    public static int count(String str,char a){
        int coun = 0;
        for (int i=0;i<=str.length()-1;i++){
            if(str.charAt(i) == a )//遍历字符串,判断是否和传入的字符一致
            coun++;
        }
        return coun;
    }
}

4.11最长共同前缀

import java.util.Scanner;
class Demo04_11{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        //输入两个字符串
        System.out.print("请输入第一个字符串:");
        String s1 = input.nextLine();
        System.out.print("请输入第二个字符串:");
        String s2 = input.nextLine();

        for(int i=0;i<s1.length()-1;i++){
            if(s1.charAt(0) != s2.charAt(0)){//如果两个字符串的首字符不同直接打印无相同前缀并直接退出
            System.out.print("无相同前缀");
            break;
            }
            if(s1.charAt(i) != s2.charAt(i)){//遍历两个字符串,出现两者不相同的情况时,打印相同的部分并退出
                System.out.print("相同的前缀为:"+s1.substring(0,i));
                 break;
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_45111347/article/details/104275653