JavaSE(2)

//1、【回文数】

//打印5位数中的所有回文数,每行打印10个数。最后统计一下一共有多少个5位回文数。

 public static void task1() {
        //1、【回文数】
        //打印5位数中的所有回文数,每行打印10个数。最后统计一下一共有多少个5位回文数。
        int count = 0;
        for (int i = 10000; i < 100000; i++) {
            int ge = i % 10;
            int shi = i / 10 % 10;
            int qian = i / 1000 % 10;
            int wan = i / 10000;

            if (ge == wan && shi == qian) {
                System.out.print(i + "\t");
                count++;
                if (count % 10 == 0) {
                    System.out.println("第" + count / 10 + "行");
                }
            }
        }
        System.out.println("一共有" + count + "个");
    }

//2、【求完数】

//一个数如果恰好等于它的所有真因子(即除了自身外的所有因数)之和,这个数就称为"完数"

 public static void task2() {
        //2、【求完数】
        //一个数如果恰好等于它的所有真因子(即除了自身外的所有因数)之和,这个数就称为"完数"
        for (int i = 1; i <= 1000; i++) {
            int x = 0;  //  哟过来接收因子的和
            for (int j = 1; j < i; j++) {  //   求  i 的真因数
                if (i % j == 0)
                    x += j;  //累加
            }
            if (x == i)
                System.out.println(i + "是完数");
        }
    }

//3、【求不重复数字】

//有1、2、3、4一共四个数字,能组成多少个不相等且无重复数字的三位数?都是多少?

/**

* 第一种思路: 随机100-999的一个数 判断 是否包含1,2,3,4

* 然后在 判断重复

* 第二种思路: 随机生成 每个位子上都是1-4 然后去重复

*/

  public static void task3() {
        //3、【求不重复数字】
        //有1、2、3、4一共四个数字,能组成多少个不相等且无重复数字的三位数?都是多少?
        /**
         * 第一种思路: 随机100-999的一个数  判断 是否包含1,2,3,4
         *            然后在 判断重复
         *  第二种思路: 随机生成 每个位子上都是1-4  然后去重复
         */
        int count = 0;
        for (int i = 100; i < 1000; i++) {
            int ge = i % 10;
            int shi = i / 10 % 10;
            int bai = i / 100;
            if (ge == 1 || ge == 2 || ge == 3 || ge == 4) {
                if (shi == 1 || shi == 2 || shi == 3 || shi == 4) {
                    if (bai == 1 || bai == 2 || bai == 3 || bai == 4) {
                        if (ge != shi && ge != bai && shi != bai) {
                            System.out.print(i + "  ");
                            count++;
                        }
                    }
                }
            }
        }
//        方法二
//        int num;
//        for (int i = 1; i <=4 ; i++) { // 百位
//            for (int j = 1; j <=4 ; j++) { //  十位
//                for (int k = 1; k <=4 ; k++) { //  个位
//                    if(i!=j&&i!=k&&j!=k){
//                        num=i*100+j*10+k;
//                        System.out.print(num+" ,");
//                    }
//                }
//            }
//        }
        System.out.println();
        System.out.println("一共有" + count + "种不重复的组合方法");

    }

//4、【根据输入求输出-求位数、逆序输出】

//键盘录入一个正整数,

// 请求:1.它是几位数?

// 2.逆序打印出各位数字。

public static void task4() {
        //4、【根据输入求输出-求位数、逆序输出】
        //键盘录入一个正整数,
        // 请求:1.它是几位数?
        // 2.逆序打印出各位数字。

        Scanner scan = new Scanner(System.in);
        int num = 0;
        while (num<=0){
            System.out.println("请输入一个正整数:");
            num=scan.nextInt();
        }
        String str = String.valueOf(num);
        char[] array = str.toCharArray();
        System.out.println("你输入的数为:" + array.length+"位数");
       //  逆序打印各位数字
        StringBuffer sb = new StringBuffer(str);
        str=sb.reverse().toString();
        System.out.println(str);
    }

//5、【数列的前n项和】

//有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13. 求出这个数列的前20项之和。

//注:提前告诉你答案是32.66026079864164

 public static void task5() {
        //5、【数列的前n项和】
        //有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13. 求出这个数列的前20项之和。
        //注:提前告诉你答案是32.66026079864164
        double fenzi = 2;
        double fenmu = 1;
        double sum = 0;
        for (int i = 0; i < 20; i++) {
            sum += fenzi / fenmu;
            fenzi = fenzi + fenmu;
            fenmu = fenzi - fenmu;
        }
        System.out.println(sum);

//        方法二
//        double[] arr1=new double[20];//分子
//        double[] arr2=new double[20];// 分母
//        arr1[0]=2;
//        arr2[0]=1;
//        arr1[1]=3;
//        arr2[1]=2;
//        for (int i = 2; i < arr1.length ; i++) {
//            arr1[i]=arr1[i-1]+arr1[i-2];
//        }
//        for (int i = 2; i < arr2.length ; i++) {
//            arr2[i]=arr2[i-1]+arr2[i-2];
//        }
//        int sum1=0;
//        for (int i = 0; i < 20; i++) {
//            sum1+=arr1[i]/arr2[i];
//        }
//        System.out.println(sum1);
    }

//6、【求奇数/偶数和】

//求100以内的所有奇数/偶数的和。

//推荐方法二

public static void task6() {
        //6、【求奇数/偶数和】
        //求100以内的所有奇数/偶数的和。
        int oddSum = 0;
        int evenSum = 0;
        for (int i = 1; i < 101; i += 2) {
            oddSum += i;
        }
        System.out.println(oddSum);
        for (int i = 2; i < 101; i += 2) {
            System.out.println(i);
            evenSum += i;
        }
        System.out.println(evenSum);
//        第二种方法
//        for (int i = 0; i < 101; i++) {
//            if(i%2==0){
//                oddSum+=i;
//            }else {
//                evenSum+=i;
//            }
//        }
//        System.out.println(oddSum);
//        System.out.println(evenSum);
    }

//7、【自由落体】

//假如一个小球从100米高度自由落下,每次落地后就反跳回原高度的一半。那么求它在第10次落地时,共经过多少米?第10次反弹多高?

public static void task7() {
        //7、【自由落体】
        //假如一个小球从100米高度自由落下,每次落地后就反跳回原高度的一半。那么求它在第10次落地时,共经过多少米?第10次反弹多高?
        double s = 0;  //  小球经过的路程
        double h = 100;//  初始下落高度
        for (int i = 1; i <= 10; i++) {
            s = s + h+h/2;  //下落距离+反弹高度
            h = h / 2;  // 反弹高度
        }
        s-=h; // 将最后一次落地反弹的高度减去  因为最后一次落地时小球不会再反弹
        System.out.println("小球经历了:"+s+"米");
        System.out.println("小球第十次的高度:" + h+"米");
    }

//8、【循环练习-蜗牛爬井】

//井里有一只蜗牛,他白天往上爬5米,晚上掉3.5 米,井深56.7米,计算蜗牛需要多少天才能从井底到爬出来。

//推荐方法二

    public static void task8() {
        //8、【循环练习-蜗牛爬井】
        //井里有一只蜗牛,他白天往上爬5米,晚上掉3.5 米,井深56.7米,计算蜗牛需要多少天才能从井底到爬出来。

        int days = 0;
        double heightSum = 0;
        while (true) {
            heightSum += 5;  //  蜗牛白天爬的
            days++;
            //System.out.println(sum);
            //System.out.println(days);
            if (heightSum > 56.7) {
                break;
            }
            heightSum -= 3.5; // 蜗牛白天爬的减去晚上掉落的

//            第二种方法
//            heightSum+=5;
//            if(heightSum<=56.7){
//                heightSum-=3.5;
//            }else {
//                break;
//            }
//            days++;
        }
        System.out.println("蜗牛需要"+days+"天才能爬出来");
    }

//9、【求和-去除7倍数和包含7】

//打印出1-100之间所有不是7的倍数和不包含7的数字, 并求和。

public static void task9() {
        //9、【求和-去除7倍数和包含7】
        //打印出1-100之间所有不是7的倍数和不包含7的数字, 并求和。
        int Sum = 0;
        for (int i = 1; i < 101; i++) {
            int ge = i % 10;
            int shi = i / 10;
            if (i % 7 != 0 && ge != 7 && shi != 7) {
                System.out.print(i+",");
                Sum += i;
            }
        }
        System.out.println();
        System.out.println("和为:" + Sum);
    }

//10、【排序】

//随机给十个数字,对它们进行排序。(可以给一个有10个整数元素的数组,然后对数组排序)

    public static void task10() {
        //10、【排序】
        //随机给十个数字,对它们进行排序。(可以给一个有10个整数元素的数组,然后对数组排序)
        int[] a = new int[10];
        for (int i = 0; i < a.length; i++) {
            int x = (int) (Math.random() * 100);
            a[i] = x;
        }
//        方法一:Arrays.sort();
//        Arrays.sort(a);
//        System.out.println("Arrays.sort()方法排序:"+Arrays.toString(a));

//        方法二:冒泡排序
        for (int i = 0; i <=a.length ; i++) { // 轮数
            for (int j = 0; j < a.length-1-i; j++) { //  用来判断
                if(a[j]>a[j+1]){
                    int temp=a[j+1];
                    a[j+1]=a[j];
                    a[j]=temp;
                }
            }
            System.out.println("第"+(i+1)+"轮排序的结果"+Arrays.toString(a));
        }
        System.out.println("最终排序的结果"+Arrays.toString(a));
    }

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值