传智播客旗下技术交流社区北京校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhukai 初级黑马   /  2019-3-30 11:32  /  266 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在黑马学了一个月了,对于我这种真的零基础的人来说.  不像我们班的那些人说好的零基础结果骗子,一个个大佬.躲在角落瑟瑟发抖,我个人感觉  继承班一开始学 对于我是真的很吃力,没思路   不熟悉语法 那时候一下子,甚至有回去的打算.
后面上了就业班,就没有那总感觉了,  从0到1是最难的  从1到100相对来说就没有那么难了.
  写够万行代码不行都行

  给你们第四天的作业你们可以试试
1.分析以下需求,并用代码实现:
        (1)打印1-100之间的所有素数及个数
        (2)每行输出5个满足条件的数,之间用空格分隔
        (3)如果一个大于1的自然数,这个数只能被1和其本身整除,这个数就叫素数。
        (4)如:2 3 5 7 11
       
2.分析以下需求,并用代码实现:
        (1)珠穆朗玛峰高度为8848米,有一张足够大的纸,厚度为0.001米。
        (2)请问,我折叠多少次,可以折成珠穆朗玛峰的高度。
       
3.分析以下需求,并用代码实现:
        (1) 计算15+25+35+....+1005的和
       
4.分析以下需求,并用代码实现:
        (1)打印倒直角三角形  
                *****
                ****
                ***
                **
                *
        (2)打印等边三角形(题目较难,可作为扩展)
                    *
                   * *
                  * * *
                 * * * *

5.分析以下需求,并用代码实现(每个小需求都要封装成一个方法):
        (1)求两个数据之和(两个整数或者两个小数)
        (2)判断两个数据是否相等(两个整数或者两个小数)
        (3)获取两个数中较大的值(两个整数或者两个小数)
        (4)打印m行n列的星形矩形
        (5)打印nn乘法表

6.定义一个方法名blackjack接收两个大于0的int类型值,返回两个数中不大于21且最接近21的数,
  如果两个数都大于21,则返回0;

7.定义一个方法接收3个int值,A B C,返回他们的总和。
然而,如果其中一个值与另一个值相同,则它们不参与求和。如果三个都相同则都不求和。


//扩展题,有难度
8.我们想做一排砖(长度自己定),我们有一些小砖(每块1英寸)和大砖(每块5英寸),
如果用我们选择的砖块的数量能够拼接成功,则返回true;否则返回false,
例如:makeBricks(3, 1, 8) → true
(尽量不使用循环,太耗费时间,会导致后台验证超时)

        思路:
        1,        第一个参数代表小砖,第二个参数代表大砖,第三个参数代表总寸数
        2,大砖的寸数加小砖寸数能够刚好拼接成总寸数,就可以返回true
        3,c/5 需要的大砖   c%5需要的小砖


//扩展题,有难度
9.我们要做一包规定质量的巧克力,有每个一公斤和每个五公斤的巧克力棒,
方法中有三个参数,第一个是小巧克力棒的个数,第二个是大巧克力棒的个数,第三个是规定的质量。
假设我们总在使用小巧克力棒之前使用大巧克力棒,返回要使用多少个小巧克力棒才能完成规定的质量,如果不能完成则返回-1;
(尽量不使用循环,太耗费时间,会导致后台验证超时)

        思路:
        1,先考虑不满足条件的情况排除,总砖不够的情况
        2,小砖可以拼接大砖,但是大砖不可以劈开小砖
                也就是说只要小砖不够,那么一定拼接不成功
        3,考虑大砖够的情况,小砖需要多少

10.把今天讲过的其他案例再练习一遍
1.分析以下需求,并用代码实现:
        (1)打印1-100之间的所有素数及个数
        (2)每行输出5个满足条件的数,之间用空格分隔
        (3)大于1的能被1和其本身整除的数叫素数
        (4)如:2 3 5 7 11
                答:参考答案
                public static void main(String[] args) {
                int count = 0;
                for (int i = 2; i <= 100; i++) {
                        for (int j = 2; j <=i; j++) {
                               
                                if(i%j==0 && i!=j) {
                                        break;
                                }
                                if(i%j==0 && i==j) {
                                        count++;
                                        System.out.println(i);
                                }
                        }
                }
                System.out.println("素数有:"+count+"个");
        }
        }
                       
2.分析以下需求,并用代码实现:
        (1)珠穆朗玛峰高度为8848米,有一张足够大的纸,厚度为0.001米
        (2)请问,我折叠多少次,可以折成珠穆朗玛峰的高度。
        答:参考答案
                public class Test05 {
                        public static void main(String[] args) {
                                //1.计数器统计折纸的次数
                                int count = 0;
                                //2.为了方便计算将纸张的厚度和山的高度都转换成毫米
                                //定义纸张的厚度为1毫米
                                int paperHigh = 1;
                                //定义山的高度为8848000毫米
                                int mountainHigh = 8848000;
                                //3.只要纸张折叠后的厚度<山的高度,就循环
                                while(paperHigh<mountainHigh) {
                                        paperHigh*=2;
                                        count++;
                                }
                                //4.输出折叠后的纸张的总厚度和折叠次数
                                System.out.println("纸张折叠后的总厚度为:"+paperHigh);
                                System.out.println("纸张折叠的次数为:"+count);
                        }
                }
               
3.分析以下需求,并用代码实现:
        (1) 计算15+25+35+....+1005的和(分别使用for循环和while循环完成)
                答:参考答案
                        public class Test07 {
                                public static void main(String[] args) {
                                        int i = 15;
                                        int sum = 0;
                                        while(i<=1005) {
                                                sum+=i;
                                                i+=10;
                                        }
                                        System.out.println(sum);
                                }
                        }
                       
4.分析以下需求,并用代码实现:
        (1)打印倒直角三角形
                *****
                ****
                ***
                **
                *
        (2)打印等边三角形
                         *
                        * *
                   * * *
                  * * * *
                 * * * * *
                答:参考答案
                        public class Test08 {
                                public static void main(String[] args) {
                                        /*
                                                 *
                                                * *
                                           * * *
                                          * * * *
                                         * * * * *
                                        */
                                        for(int i=1;i<=5;i++) {
                                                for(int j= 5;j>=i;j--) {
                                                        System.out.print(" ");
                                                }
                                                for(int z=i;z>=1;z--) {
                                                        System.out.print("* ");
                                                }
                                                System.out.println();
                                        }
                                        System.out.println();
                                        System.out.println("---------------------------");
                                        System.out.println();
                                        /*
                                                *****
                                                ****
                                                ***
                                                **
                                                *
                                        */
                                        for(int i=1;i<=5;i++) {
                                                for(int j= 5;j>=i;j--) {
                                                        System.out.print("*");
                                                }
                                                System.out.println();
                                        }       
                                }
                        }                       

5.分析以下需求,并用代码实现(每个小需求都要封装成一个方法):
        (1)求两个数据之和(整数和小数)
        (2)判断两个数据是否相等(整数和小数)
        (3)获取两个数中较大的值(整数和小数)
        (4)打印m行n列的星形矩形
        (5)打印nn乘法表
                答:参考答案
                        public class Test09 {
                                public static void main(String[] args) {
                                        int a = 10;
                                        int b = 20;
                                        int sum = add(a,b);
                                        System.out.println("sum="+sum);
                                        System.out.println(isEquals(a, b));
                                        System.out.println("max="+getMax(a, b));
                                        double ad = 10.35;
                                        double bd = 10.355;
                                        double sumd = add(ad,bd);
                                        System.out.println();
                                        System.out.println("sum="+sumd);
                                        System.out.println(isEquals(ad, bd));
                                        System.out.println("max="+getMax(ad, bd));
                                        print(5,5);
                                        print99(5);
                                       
                                }
                                //1.求两个int类型数据的和
                                public static int add(int a,int b) {       
                                        int sum = a + b;
                                        return sum;                                                       
                                }
                                //2.求两个double类型数据的和
                                public static double add(double a,double b) {       
                                        double sum = a + b;
                                        return sum;                                                       
                                }
                                //3.判断两个int数据是否相等
                                public static boolean isEquals(int a,int b) {                //isEquals 是否相等
                                        return a == b;
                                }
                                //4.判断两个double数据是否相等
                                public static boolean isEquals(double a,double b) {                //isEquals 是否相等
                                        return a == b;
                                }
                                //5.求两个int类型数据的最大值
                                public static int getMax(int a,int b) {
                                        return a > b ? a : b;
                                }
                                //6.求两个double类型数据的最大值
                                public static double getMax(double a,double b) {
                                        return a > b ? a : b;
                                }
                                //7.打印m行n列的星形矩形
                                public static void print(int a,int b) {
                                        for (int i = 1;i <= a ;i++ ) {                                        //行数
                                                for (int j = 1;j <= b ;j++ ) {                                //列数
                                                        System.out.print("*");
                                                }
                                                System.out.println();
                                        }
                                }
                                //8.打印nn乘法表
                                public static void print99(int a) {
                                        for (int i = 1;i <= a ;i++ ) {                                        //行数
                                                for (int j = 1;j <= i ;j++ ) {                                //列数
                                                        System.out.print(j + "*" + i + "=" + (i * j) + "\t" );
                                                }
                                                System.out.println();
                                        }
                                }
                        }
                       
6.类中有一个方法,方法名blackjack;

  定义一个方法接收两个大于0的int类型值,返回两个数中不大于21且最接近21的数,
  如果两个数都大于21,则返回0;

代码:
public class Itheima
{
         public int blackjack(int a,int b){
                        if(a>21 && b>21){
                                return         0;
                        }
                        if(a>21 && b<21){
                                return b;
                        }else if(a<21 && b>21){
                                return a;
                        }else{
                                 if(Math.abs(21-a)>Math.abs(21-b)){
                                        return b;
                                 }else{
                                        return a;
                                 }
                        }
         }
}
7.定义一个方法接收3个int值,A B C,返回他们的总和。
然而,如果其中一个值与另一个值相同,则它们不参与求和。如果三个都相同则都不求和。

代码:
public class Itheima{
        public int loneSum(int a,int b,int c){
                if(a==b && b==c){
                        return 0;
                }
                if(a==b){
                        return c;
                }else if(b==c){
                        return a;
                }else if(a==c){
                        return b;
                }else{
                        return a+b+c;
                }
        }
}
//扩展题目:有难度
8.我们想做一排砖(长度自己定),我们有一些小砖(每块1英寸)和大砖(每块5英寸),
如果用我们选择的砖块的数量能够拼接成功,则返回true;否则返回false,
例如:makeBricks(3, 1, 8) → true
(尽量不使用循环,太耗费时间,会导致后台验证超时)

        思路:
        1,定义一个方法,接收三个参数,第一个参数代表小砖,第二个参数代表大砖,第三个参数代表总寸数
        2,大砖的寸数加小砖寸数能够刚好拼接成总寸数,就可以返回true
        3,c/5 需要的大砖   c%5需要的小砖

代码:
public class Itheima{
        public boolean makeBricks(int a,int b,int c){
                return a+b*5>=c && a>=c%5;
       
        }
}
//扩展题目:有难度
9.我们要做一包规定质量的巧克力,有每个一公斤和每个五公斤的巧克力棒,
方法中有三个参数,第一个是小巧克力棒的个数,第二个是大巧克力棒的个数,第三个是规定的质量。
假设我们总在使用小巧克力棒之前使用大巧克力棒,返回要使用多少个小巧克力棒才能完成规定的质量,如果不能完成则返回-1;
(尽量不使用循环,太耗费时间,会导致后台验证超时)

思路:
1,先考虑不满足条件的情况排除,总砖不够的情况
2,小砖可以拼接大砖,但是大砖不可以劈开小砖
        也就是说只要小砖不够,那么一定拼接不成功
3,考虑大砖够的情况,小砖需要多少

代码:
public class Itheima{
        public int makeChocolate(int a,int b,int c){
                if(a+b*5<c){
                        return -1;
                }
                if(a<c%5){
                        return -1;
                }
                if(b*5>=c){//
                        return c%5;
                }else{
                        return c-(b*5);//
                }
        }
}





分享至 : QQ空间
收藏

4 个回复

倒序浏览
6666666666666666666666666666666666666666666
回复 使用道具 举报
厉害哟~      
回复 使用道具 举报
398580721 来自手机 中级黑马 2019-4-6 21:43:08
板凳
大佬厉害,加油哦。继续努力  
回复 使用道具 举报
为了未来幸福全力以赴吧!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马