美文网首页程序员
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:编程练习

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