美文网首页程序员
Java学习8:编程练习

Java学习8:编程练习

作者: 苦难_69e0 | 来源:发表于2020-09-17 18:25 被阅读0次

首先了解一个问题,应该怎么去编程?
1、解决一个问题的时候,可以先使用汉语描述思路。(养成好习惯)
2、复杂的问题可以“一步一步”去实现,没必要以下全部实现。
编程思想/思路都是一步一步分析,积累出来的。
编程最主要的就是写汉语思路。思路有了,代码就不远了。
把问题拆开,一个一个去解决一下。


练习题.png

第一题:
第一步:从1开始循环,循环到1000,先保证每一个数字都能取到。
第二步:在第一步的循环过程中,一个数字一个数字筛查,判断该数字是否是“不能被7整除的整数”。

public class Homework1{
    public static void main(String[] args){
        int sum = 0;
        for (int i = 1 ;i <=1000 ;i++ ){//从1循环到1000
            if(i%7!=0){//判断,如果i对7取余不等于0,求和
                sum = sum +i;//不能被7整除就累加/求和
            }
        }
        System.out.println("sum = " + sum);
    }
}

第二题:
有规律,除了1以外,奇数是减法,偶数是加法
第一种思路: 可以把所有的偶数求和,再把所有的奇数求和,然后偶数求和的结果减去奇数求和的结果再加上1
第二种思路:循环过程中,取出每个值,判断该数是偶数还是奇数,偶数是加,奇数就减。
这里我给出第二种思路的写法。

public class Homework2{
    public static void main(String[] args){
        int sum = 1;
        for (int i = 2 ; i <= 100 ; i ++){
            if(i % 2 == 0){//偶数
                sum +=i;
            }else{//奇数
                sum -=i;
            }
        }
        
        System.out.println("结果为:" + sum);
    }
}

第三题:
第一步:怎么在键盘上接收一个正整数
第二步:先不管乘法的事儿,先从输入的正整数取到1(逐次递减)

public class Homework3{
    public static void main(String[] args){
        java.util.Scanner s = new java.util.Scanner(System.in);
        System.out.print("请输入一个正整数:");
        long jieCheng = 1;
        for ( int i = s.nextInt() ; i > 0 ; i-- ){
            jieCheng = jieCheng * i;
        }
        System.out.println("它的阶乘为:" + jieCheng);
    }
}

第四题:
重点题目: 主要练习,在外部打布尔标记
什么是因数?例如3*5=15 3和5都是15的因数
质数就是除了1和他本身就没有因数的数。

public class Homework4{
    public static void main(String[] args){
        java.util.Scanner s = new java.util.Scanner(System.in);
        System.out.print("请输入一个正整数:");
        int num = s.nextInt();
        //可以考虑用一个布尔标记
        boolean zhiShu = true;//true表示是质数
        //判断该数字是不是质数
        for (int i = 2 ; i< num ;i++ ){
            if(num %i ==0){//余数是0表示不是质数,循环没必要执行了,为了效率,这里要终止循环
                zhiShu = false;
                break;
            }
        }
        System.out.println(num + (zhiShu ? "是" : "不是") + "质数");
    }
}

第五题:
空格的规律:第1行4个空格、第2行3个空格、第3行2个空格,第4行1个空格、第5行0个空格
星号的规律:第1行1个、第2行3个、第3行5个、第4行7个、第5行9个、行号 * 2 - 1

public class Homework5{
    public static void main(String[] args){
        java.util.Scanner s = new java.util.Scanner(System.in);
        System.out.print("请输入一个正整数作为行数:");
        int rows = s.nextInt();
        for (int i = 1;i <= rows ;i++){//外循环控制总行数
            //在这里需要一行全部输出
            //输出空格以及“*”
            //输出空格循环
            for (int j = 0;j<rows - i ;j++ ){
                System.out.print(" ");
            }
            //输出星号循环
            for (int k = 0;k<i*2-1 ;k++ ){
                System.out.print("*");
            }
            //换行
            System.out.println();

        }
    }
}

第六题:
主要练习:while循环和
每一天都会得到2.5元
即使是花了6元,当天依然有2.5元的收入

public class Homework6{
    public static void main(String[] args){
        int day = 0;//天数的默认初始值为0
        double money = 0.0;
        while(true){
            day++;//天数加1
            money += 2.5;//钱数加2.5元
            if(day % 5 == 0 ){
                money -= 6.0;
            }
            //当money >= 100.0 的时候,循环结束
            if (money >= 100.0){
                break;
            }
        }
        System.out.println("小芳通过" + day + "天积攒了" + money + "元钱");
    }
}

第七题:
一个数如果恰好等于它的因子之和,这个数就是完数。
因子怎么找?
例如:10的因子怎么找
10 % 1 == 0
10 % 2 == 0
10 % 5 == 0
不算10本身
10的因子:1,2,5
1 + 2 + 5 = 8
10不是完数

public class Homework7{
    public static void main(String[] args){
        //第一步:先从1到1000,每个数字都取出来
        //1不属于完数,从2开始判断
        for (int i = 2;i <= 1000 ;i++ ){
            //第二步:在这里可以拿到i,那么此时应该判断i是否是一个完数
            //数字有了,接下来找这个数字的因子
            int sum = 0;
            for (int j = 1; j <= i / 2 ; j++ ){
                //假设这个数是6,j取到的值就是:1 2 3 4 5
                //但是实际上j只取了:1 2 3
                //取到一半就行
                if(i % j == 0){
                    //此时j就是因子。
                    //记得将因子j追加,累计。
                    sum += j;
                }
            }
            //以上for循环结束,表示:所有银子求和完毕了
            if (i == sum){
                //i是一个完数
                System.out.println(i);
            }
        }
    }
}

相关文章

  • Java学习8:编程练习

    首先了解一个问题,应该怎么去编程?1、解决一个问题的时候,可以先使用汉语描述思路。(养成好习惯)2、复杂的问题可以...

  • <<java 8 函数式编程>>学习 -

    之前为了学习函数式编程,看过SCIP和Little Scheme, 现在学习一下java 8的. Java 8的最...

  • Java8 lambda快速上手

    学习地址 书 -> Java8函数式编程 https://dzone.com/articles/java-lamb...

  • Java 8函数式编程学习笔记

    Java 8函数式编程学习笔记 author:Gavin date:2018/11/09 什么是函数式编程 在思考...

  • 2018-09-21

    java学习笔记(二) 前一篇简单的介绍了Java8函数式编程,这篇还将继续函数式编程之旅。 流 在Java程序中...

  • Java 8

    Java 8简明教程 跟上 Java 8 – 你忽略了的新特性 跟上 Java 8 – 函数式编程 跟上 Java...

  • java基础编程练习之谁拿了最多奖学金

    java基础编程练习之谁拿了最多奖学金

  • [Java8]JAVA8 学习

    语言层面 Java8 lambda表达式学习函数编程方法引用(Method References)Optional...

  • Java 8 Stream 原理解析

    说起 Java 8,我们知道 Java 8 大改动之一就是增加函数式编程,而 Stream API 便是函数编程的...

  • Java 8 函数编程核心简述

    参考:Java 8实战Java 8函数式编程-图书-图灵社区深入探索Java 8 Lambda表达式 前言 目前在...

网友评论

    本文标题:Java学习8:编程练习

    本文链接:https://www.haomeiwen.com/subject/kpbzsktx.html