Java初阶——练习题

import java.util.Random;
import java.util.Scanner;

public class java_11_1 {


    public static void main(String[] args) {

        /*int ret = numberNine();
        System.out.println("ret =" + ret);*/

       /* printLeapYear();
       * int a = 4;
        int b = 7;
        System.out.println(isPrimeNum(a));
        System.out.println(isPrimeNum(b));
       * */

        /* printPrimeNUm();*/

        /*fun();*/


        /*printShuiXianHua();*/

        /*int a = 25;
        int b = 15;
        System.out.println(maxDivisor(a,b));*/


        /*System.out.println(add(10,20));
        System.out.println(add(0.5,0.2,0.3));*/
        
        int a = 10;
        int b = 20;
        int c = 30;
        System.out.println(max(a,b,c));

    }

    //1. 编写程序数一下1 ~ 100中出现多少个数字9
    public static int numberNine() {
        //count存储1——100出现的9
        int count = 0;
        for (int i = 0; i < 100; i++) {
            // 若9出现在个位
            if (i % 10 == 9) {
                count++;
                System.out.print(i + ",");
            }
            //当9出现在十位
            // 91/10=9
            if (i / 10 == 9) {
                count++;
                System.out.print(i + ",");
            }
        }
        return count;
    }

    //2.输出1000-2000之间的所有闰年
    public static void printLeapYear() {
        int count = 0;
        for (int i = 1000; i <= 2000; i++) {
            //所有闰年
            if (i % 100 == 0) {
                //世纪闰年
                if (i % 400 == 0) {
                    count++;
                    System.out.print(i + ",");
                }
            } else {
                //普通闰年
                if (i % 4 == 0) {
                    count++;
                    System.out.print(i + ",");
                }

            }

        }
        System.out.println("一共有" + count + "个闰年");
    }

    //3. 输入一个数,判断是否是素数(只能被自己和1整除的数,1不是素数
    public static boolean isPrimeNum(int num) {
        if (num <= 1) {
            return false;
        }
        //num >= 2
        //判断聪开始到num 有没有因子
        //从2开始依次判断i能否被num 整除
        for (int i = 2; i < num; i++) {
            if (num % i == 0) {
                return false;
            }

        }
        return true;
    }

    //4. 打印1-100的所有素数 重要!!! 引入标志位
    public static void printPrimeNUm() {
        //i从2-100之间判断是否是素数
        int count = 0;
        for (int i = 2; i <= 100; i++) {

            //引入标志位判断i是否是素数
            boolean flag = true;
            //内层循环判断2-100之间有没有因子
            for (int j = 2; j < i; j++) {
                if (i % j == 0) {
                    //此时j是i 的因子
                    //i 不是素数
                    flag = false;
                    break;
                }

            }
            //此时需要有一个记号,告知i是否是素数
            if (flag) {
                //此时 i 是个素数
                count++;
                System.out.println(i + ",");
            }

        }
        System.out.println("1到100一共有" + count + "个素数");

    }

    //5.完成猜数字游戏,用户输入数字,判断该数字是大于、小于、还是等于随机生成的数字,等于的时候退出程序
    public static void fun() {
        Scanner scanner = new Scanner(System.in);
        Random random = new Random();
        //生成一个1-100的随机数
        int toGus = random.nextInt(100);
        System.out.println(toGus);
        while (true) {
            System.out.println("请输入一个数字");
            int num = scanner.nextInt();
            if (num < toGus) {
                System.out.println("小了!!!");
            } else if (num > toGus) {
                System.out.println("大了!!!");
            } else {
                System.out.println("对了!!!");
                break;
            }
        }
    }

    //6. 求出100~999之间的所有水仙花数并输出
    // 水仙花数是指一个三位数,其个位数的立方和确好等于该数本身
    public static void printShuiXianHua() {
        for (int i = 100; i < 999; i++) {
            //要把一个数的个位、十位、百位分别拆出来
            int geiWei = i % 10;
            int baiWei = i / 100;
            int shiWei = i / 10 % 10;
            int sum = geiWei * geiWei * geiWei + shiWei * shiWei * shiWei + baiWei * baiWei * baiWei;
            if (i == sum) {
                System.out.println(i);
            }

        }
    }

    //7. 计算1/1 v 1/2 + 1/3 -1/4 +1/5 .....+1/99-1/100的值
    public static double add(){
        double ret = 0.0;
        int flag = 1;
        for (int i = 0; i <= 100; i++) {
            ret = ret + 1.0 / i * flag;
            flag = -flag;

        }
        return ret;
    }

    //8. 求两个正整数的最大公约数(辗转相除法——欧几里得算法)
    public static int maxDivisor(int a,int b){
        //找到a 和 b 的最大最小值
        int max = a > b ? a : b;
        int min = a < b ? a : b;
        int i = max % min;
        //当i== 0时,此时 min 为最大公约数
        while (i != 0){
            max = min;
            min = i;
            i = max % min;
        }
        return min;
    }

    //9. 在同一个类中,分别定义求两个整数和的方法 和三个整数和的方法
    public static int add(int a,int b){
        return a + b;
    }
    public static double add(double a,double b,double c){
        return a + b + c;
    }

    //10.创建方法求两个数的最大值max2,随后再写一个求3个数的最大值的函数max3
    //要求:在max3这个函数中,调用max2函数,来实现3个数的最大值计算
    public static int max(int a,int b){
        return a > b ? a : b;
    }
    public static int max(int a, int b,int c){
        //求 a 和 b 的最大值
        int tmpMax = max(a,b);
        int max = max(tmpMax,c);
        return max;

    }

}

你可能感兴趣的:(java初阶,java)