欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java中的函数(方法)习题总结

程序员文章站 2024-03-02 11:57:16
...

这次我们来说一些关于Java中方法的练习题,刚开始不是很难,一起来看看吧!

Java中的函数(方法)习题总结

思路分析:这道题是让我们编写一个方法来求一个整数的各位数字之和,求一个整数的各位数字之和前面我们已经写过相关代码了,在这里只需要讲相关代码进行封装,写进一个方法里面,然后在主方法当中进行调用即可。题目很简单,我们按照题目要求编写一个sumDigits方法,然后把求一个整数的各位数字之和部分的代码写到sumDigits里面就可以了。

import java.util.Scanner;
public class Demo04_01{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个整数:");
        long n = scanner.nextLong();
        //计算该数字的所有位数之和
        int sum = sumDigits(n);
        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;
            }
        }
    }
}

运行结果:

请输入一个整数:1234
10
请输入一个整数:567
18

 

Java中的函数(方法)习题总结

思路分析:这道题是判断回文数,我们前面也写过。

第一步:主函数里面让用户输入一个整数,然后用if语句来判断它是不是回文数,只不过if语句判断的过程可以单独写一个方法;

第二步:按照题目要求是一个布尔类型的方法isPalindrome,在这个布尔类型的方法里面,我们返回的是true或者false,为了让代码更简单,我们可以写成return reverse(num) == num;

第三步:然后针对这个reverse我们重新再写一个方法,reverse方法的功能是将用户输入的数字进行反向倒置。

第四步:编写代码。

import java.util.Scanner;
class Demo04_02{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个整数:");
        int num = scanner.nextInt();
        //判断该整数是否是回文
        if(isPalindrome(num)){
            System.out.println("该整数是回文数");
        }else{
            System.out.println("该整数不是回文数");
        }
    }
    public static boolean isPalindrome(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;
            }
        }
    }
}

运行结果:

请输入一个整数:567765
该整数是回文数
请输入一个整数:1234
该整数不是回文数

 

Java中的函数(方法)习题总结

思路分析:这道题我们之前写过,按照题目要求,只需把所有的运算过程(即所有的for循环)写进displayPattern方法里面就行,其它一模一样,所以直接来看代码吧。

import java.util.*;
public class Demo04_03{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入行数:");
		int num = scanner.nextInt();
        displayPattern(num);
    }
    public static void displayPattern(int line){
        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();
        }
    }
}

运行结果:

请输入行数:8
              1
            2 1
          3 2 1
        4 3 2 1
      5 4 3 2 1
    6 5 4 3 2 1
  7 6 5 4 3 2 1
8 7 6 5 4 3 2 1

 

Java中的函数(方法)习题总结

 思路分析:这道题还是一样,将具体的运算过程写进题目给的方法里面就可以了,而且运算过程也很简单,我们直接来看代码吧

class Demo04_05{
    public static void main(String[] args){
        System.out.println(sqrt(4));
    }
    public static double sqrt(long n){
        double lastGuess = 1;
        double nextGuess = 0;
        while(true){
            nextGuess = (lastGuess+n/lastGuess)/2;
            if(Math.abs(nextGuess-lastGuess)<0.0001){
                return nextGuess;
            }else{
                lastGuess = nextGuess;
            }
        }      
    }
}

运行结果:

我们代码中给的数字是4,所以最后输出的应该是跟2很相近的浮点数。

2.000000000000002

 

 Java中的函数(方法)习题总结

思路分析:判断一个整数是否是回文数和是否是素数,我们前面也都写过,都很简单,书写的原理还是一样,将相应的代码块写进相应的方法里面就行了,没有什么改变。

public 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++;
        }
    }
    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;
    }
}

运行结果:

2 3 5 7 11 101 131 151 181 191
313 353 373 383 727 757 787 797 919 929
10301 10501 10601 11311 11411 12421 12721 12821 13331 13831
13931 14341 14741 15451 15551 16061 16361 16561 16661 17471
17971 18181 18481 19391 19891 19991 30103 30203 30403 30703
30803 31013 31513 32323 32423 33533 34543 34843 35053 35153
35353 35753 36263 36563 37273 37573 38083 38183 38783 39293
70207 70507 70607 71317 71917 72227 72727 73037 73237 73637
74047 74747 75557 76367 76667 77377 77477 77977 78487 78787
78887 79397 79697 79997 90709 91019 93139 93239 93739 94049

 

 Java中的函数(方法)习题总结

 

思路分析:这道题相比前几道题过程稍微有点繁琐,不过也不是很难,我们来看。

第一步:主函数里面可以直接来一个while循环,然后循环里面用if语句判断是否是反素数,具体判断另写一个方法。

第二步:写判断反素数的方法,因为反素数要求1.本身是素数2.反转之后也是素数3.不能是回文数,所以我们可以再写三个方法,分别来判断数字是否满足这三个要求;

第三步:这三个要求的相关代码我们前面都写过,所以直接拿来用就行,最后再判断是否是反素数的方法里面调用即可。

第四步:编写代码。

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;
            }
        }
    }
}

运行结果:

13 17 31 37 71 73 79 97 107 113
149 157 167 179 199 311 337 347 359 389
701 709 733 739 743 751 761 769 907 937
941 953 967 971 983 991 1009 1021 1031 1033
1061 1069 1091 1097 1103 1109 1151 1153 1181 1193
1201 1213 1217 1223 1229 1231 1237 1249 1259 1279
1283 1301 1321 1381 1399 1409 1429 1439 1453 1471
1487 1499 1511 1523 1559 1583 1597 1601 1619 1657
1669 1723 1733 1741 1753 1789 1811 1831 1847 1867
1879 1901 1913 1933 1949 1979 3011 3019 3023 3049