zoukankan      html  css  js  c++  java
  • Java第五次作业

    (一)学习总结

    1.在上周完成的思维导图基础上,补充本周的学习内容,对Java面向对象编程的知识点做一个全面的总结。

    参考资料: XMind
    2.汽车租赁公司,出租汽车种类有客车、货车和皮卡三种,每辆汽车除了具有编号、名称、租金三个基本属性之外,客车有载客量,货车有载货量,皮卡则同时具有载客量和载货量。用面向对象编程思想分析上述问题,将其表示成合适的类、抽象类或接口,说明设计思路并画出类图。
    根据题意,建立4个类,其中汽车租赁公司为抽象类,客车、货车和皮卡分别继承父类。

    工具:PowerDesigner
    参考教程:UML 简介
    3.阅读下面程序,分析代码是否能编译通过,如果不能,说明原因,并进行改正。如果能,列出运行结果。

           interface Animal{    
                void breathe();
                void run();
                void eat();
            }
            class Dog implements Animal{
                public void breathe(){
                    System.out.println("I'm breathing");
                }
                void eat(){
                    System.out.println("I'm eating");
                }
            }
            public class Test{
                public static void main(String[] args){
                    Dog dog = new Dog();
                    dog.breathe();
                    dog.eat();
                }
            }
    

    不能,在实接口中可以不实现抽象方法,但非抽象方法的一定要都写上。若方法没有用到,只加上大括号就可以了。而且 void eat()前public不能少。
    改正:

         interface Animal{    
            void breathe();
            void run();
            void eat();
        }
        class Dog implements Animal{
        	
            public void breathe(){
                System.out.println("I'm breathing");
            }
            public void eat(){
                System.out.println("I'm eating");
            }
            public void run(){}
        }
        
        运行结果:I'm breathing
                  I'm eating
    

    4.运行下面的程序

        import java.util.Arrays;
        public class Test{
            public static void main(String[] args){
                String[] fruits = {"peach","banana","orange","apple"};
                Arrays.sort(fruits);
                for(int i = 0;i < fruits.length;i++)
                {
                    System.out.println(fruits[i]);
                }
            }
        }
    

    程序输出的结果是升序排序的。查看String 类的源码,说明是如何实现的?如果现在希望对输出的结果进行降序排序,该如何处理?修改上述代码,实现按照字母顺序逆序排序。
    String类继承了comparable接口,使用compareTo方法比较,Arrays中只提供基本数据类型数组排序,其他的都从属于Arrays.sort(Object[]),对象数组的排序。其他的Object类型排序需要对象实现CompareTo接口,或使用实现了ComparaTor接口的对象作为Arrays.sort方法的第二个参数.(对象数组的比较可以用comparable、Comparator)

       public final class String implements java.io.Serializable, Comparable<String>, CharSequence {  //此处继承了comparable接口
          public int compareTo(String anotherString) {   
                int len1 = value.length;
                int len2 = anotherString.value.length;
                int lim = Math.min(len1, len2);
                char v1[] = value;
                char v2[] = anotherString.value;
                int k = 0;
                while (k < lim) {
                    char c1 = v1[k];
                    char c2 = v2[k];
                    if (c1 != c2) {
                        return c1 - c2;
                    }
                    k++;
                }
                return len1 - len2;
         }
    }
    

    按照字母顺序逆序排序:

    import java.util.Arrays;
    import java.util.Comparator;
    public class Test {
        public static void main(String[] args) {
            String[] fruits = { "peach", "banana", "orange", "apple" };
            Arrays.sort(fruits, new Comparator<String>() {
    //覆写comparator方法,注意()里面才是覆写的new Comparator<String>()
                public int compare(String o1, String o2) {
                    char a = o1.charAt(0);
                    char b = o2.charAt(0);
                    if(o1.equals(o2)){
                        return 0;
                    }else if(a>b){
                        return -1;
                    }else{
                        return 1;
                    }
                }
            });
            for (int i = 0; i < fruits.length; i++) {
                System.out.println(fruits[i]);
            }
        }
    }
    

    5.其他需要总结的内容。

    (二)实验总结

    实验内容:
    1.某工厂生产各种音乐盒,客户无需知道音乐盒的制作过程,只需知道如何播放音乐盒即可。用简单工厂设计模式实现该过程:接口MusicBox具有方法play(),两个音乐盒类PianoBox,ViolinBox,MusicBoxFactory 产生MusicBox的实例。
    2.修改第三次作业的第一题,使用java.util.Date类表示职工的生日和参加工作时间,并将职工信息按照生日大小排序后输出。(分别用comparable和comparator实现)
    3.在案例宠物商店的基础上,实现以下功能:
    (1)展示所有宠物
    (2)购买宠物
    (3)显示购买清单

    完成实验内容,代码上传到码云,并对完成实验内容过程中遇到的问题、解决方案以及程序的设计思路和思考等进行归纳总结。
    格式如下:
    第二题
    问题:对于SimpleDateFormat方法不知怎么用
    解决:把Date类删掉,并且在职员类里导入SimpleDateFormat方法和Date方法,toString方法中输出时间调用new SimpleDateFormat(“yyyy-mm-dd”).format()就可以了。在Test类里导入ParseException方法和SimpleDateFormat方法,输入职员信息用try方法也要调用new SimpleDateFormat(“yyyy-mm-dd”).parse(“时间”)最后要用catch捕捉。
    第三题
    在Test类里,定义宠物商店中的宠物个数,猫的数组,狗的数组,将猫狗的信息分别放到各自的数组里后输出。新建宠物类里的一个数组,将店里的宠物放到新定义的一个数组里。先弄一个循环来设计要购买宠物的个数,在弄一个循环来将购买的宠物放到新建宠物类里的一个数组,目的是来计算总价格。
    问题:计算总价格时,价格显示不出来
    原因:这个总价格并没有计算客人购买的宠物的价格
    解决方法:定义一个宠物的数组,然后将搜寻到的宠物放到里面,之后再在for循环外调用总价格的方法。
    (三)代码托管(务必链接到你的项目)
    https://git.oschina.net/hebau_cs15/java-cs01yangliu.git
    码云commit历史截图
    上传实验项目代码到码云,在码云项目中选择“统计-commits”,设置搜索时间段,搜索本周提交历史,并截图。

    (四)学习进度条

    代码行数(新增/累积) 学习时间(新增/累积) 本周学习内容
    目标 5000行 300小时
    第2-4周 340 20 学习了java的基本知识....
    第5周
    第6周 324 10
    第8周 656 13
    第9周 463 10
  • 相关阅读:
    unsupported jsonb version number 123
    如何在MPlayer上支持RTSP
    TDengine 时序数据库的 ADO.Net Core 提供程序 Maikebing.EntityFrameworkCore.Taos
    如何使用IoTSharp对接ModBus?
    如何从源码启动和编译IoTSharp
    Asp.Net Core 自动适应Windows服务、Linux服务、手动启动时的内容路径的扩展方法
    MQTTnet 的Asp.Net Core 认证事件的扩展
    Asp.Net Core 中利用QuartzHostedService 实现 Quartz 注入依赖 (DI)
    The remote certificate is invalid according to the validation procedure 远程证书验证无效
    settings插拔式源码
  • 原文地址:https://www.cnblogs.com/yl1997/p/6753916.html
Copyright © 2011-2022 走看看