zoukankan      html  css  js  c++  java
  • Educoder -Java面向对象

    第1关:Object类

       1、编程要求:   

    • Demo类和Person类已经写好,在测试类中创建Demo类对象d1,传入输入值num1d1调用toString方法并打印输出该值;

    • 创建Demo类对象d2,同样传入输入值num1,打印判断d1d2是否相等(实际是比较地址);

    • 创建Person类对象p,传入输入值num2,打印判断d1p是否相等(实际是比较地址);

      2、测试说明:

      补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

      测试输入:

      100

      100

      预期输出:

       Demo:100

      true

      false

      3、代码展示:

    package case1;
    
    import java.util.Scanner;
    
    public class ObjectTest {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int num1 = sc.nextInt();
            int num2 = sc.nextInt();
            // 在测试类中创建Demo类对象d1,传入输入值num1, d1调用toString方法并打印输出该值
            // 创建Demo类对象d2,同样传入输入值num1,打印判断d1和d2是否相等(实际是比较地址)
            /********* Begin *********/
            Demo d1= new Demo(num1);
            System.out.println(d1);
            Demo d2=new Demo(num1);
            System.out.println(d1.equals(d2));
            /********* End *********/
            // 创建Person类对象p,传入输入值num2,打印判断d1和p是否相等(实际是比较地址)
            /********* Begin *********/
            Person p= new Person(num2);
            System.out.println(d1.equals(p));
            /********* End *********/
        }
    }
    
    class Demo {
        private int num;
    
        public Demo(int num) {
            this.num = num;
        }
    
        public boolean equals(Object obj) // Object obj = new Demo()
        {
            if (!(obj instanceof Demo)) // 判断obj是否和Demo是同类
                return false;
            Demo d = (Demo) obj; // 将父类的引用(Object)向下转换为子类(Demo)
            return this.num == d.num;
        }
    
        public String toString() {
            return "Demo:" + num; // 返回对象的值(每一个对象都有自己的特定的字符串)
        }
    }
    
    class Person {
        private int num;
    
        public Person(int num) {
            this.num = num;
        }
    }

    第2关:JAVA基础类型包装类-练习

      1、编程要求:

    • 编写测试类,输入int型值aa传递给Integer类对象aString型值bb传递给Integer类对象b,输入int型值caabbc对应的数值相等;

    • 输入String型值str11传递给String类对象str1,输入String型值str22传递给String类对象str2str1str2对应的内容相同;

    • 打印输出a == ba == cb == ca.equals(b)

    • 打印输出str1 == str2str1.equals(str2)

      2、测试效果:

      补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

      测试输入:

      100

      100

      100

      educoder

      educoder

      预期输出:

      false

      true

      true

      true

      false

      true

      3、代码展示:

    package case2;
    
    import java.util.Scanner;
    
    public class WrapperTest {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int aa = sc.nextInt();
            Integer a= new Integer(aa);
            String bb = sc.next();
            Integer b= new Integer(bb);
            int c = sc.nextInt();
            String str11 = sc.next();
            String str1 = str11;
            String str22 = sc.next();
            String str2 = str22;
            // 包装类中“==”与equals的用法比较
            // 值得注意的是,包装类中的equals方法和String类一样,都是重写了Object类中的equals方法,因此比较的是内容而不是地址,
            // 而“==”比较的依然是引用变量的地址,只是当包装类型和与之相对应的基本类型进行“==”比较时会先做自动拆箱处理。
            /********* Begin *********/
             System.out.println(a==b);
             System.out.println(a==c);
             System.out.println(b==c);
             System.out.println(a.equals(b));
             System.out.println(str1 ==str2);
             System.out.println(str1.equals(str2));
            
            /********* End *********/
        }
    }

     

    第3关:String&StringBuilder&StringBuffer类-练习

      1、编程要求:

    • 编写测试类,输入一个标准的网址,输出其域名的主体;

    • 将该主体转换为大写,打印输出;

    • 具体输出要求请看测试说明。

      2、测试效果:

       补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

      测试输入:

      https://www.educoder.net/

      预期输出:

      educoder

      EDUCODER

      3、代码展示:

    package case3;
    
    import java.util.Scanner;
    
    public class StringTest {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String str = sc.next();
            // String substring(int start,int end)
            // 截取字符串,传入的两个参数分别为要截取边界的下标
            // 在java api 中,通常使用两个数字表示范围时,都是含头不含尾,即包含起始下标对应的内容,但不包含结束下标的处对应的内容
            // String toUpperCase() 将当前字符串中的英文部分转换为全大写
            /********* Begin *********/
            int a=str.indexOf(".",12); 
            String str1 =str.substring(12,a);
            System.out.println(str1);
            System.out.println(str1.toUpperCase());
            /********* End *********/
        }
    }

    第4关:Random类

      1、编程要求:

    • 设计一个密码的自动生成器:密码由大写字母/小写字母/数字组成,生成六位随机密码。

    • 分别以123作为种子数创建Random对象,生成六位随机密码进行测试。

    • 具体输出要求请看测试说明。

      2、测试效果:

       测试输入: 1

       预期输出: NAvZuG

      3、代码展示:

    package case4;
    
    //密码的自动生成器:密码由大写字母/小写字母/数字组成,生成六位随机密码
    import java.util.Random;
    import java.util.Scanner;
    
    public class RandomTest {
        public static void main(String[] args) {
            // 定义一个字符型数组
            char[] pardStore = new char[62];
            // 把所有的大写字母放进去 把所有的小写字母放进去 把0到9放进去
            /********* Begin *********/
           for (int i = 0; i < 26; i++) {
                    pardStore[i]=(char)('A'+i);
                }
                for (int i = 26; i < 52; i++) {
                    pardStore[i]=(char)('a'+(i-26));
                }
                for (int i = 52; i < 62; i++) {
                    pardStore[i]=(char)('0'+(i-52));
                }
            /********* End *********/
            // 分别以1、2、3作为种子数 生成6位随机密码
            Scanner sc = new Scanner(System.in);
            int seed = sc.nextInt();
            /********* Begin *********/
            Random r= new Random(seed);
            for (int i = 0; i < 6; i++) {
                    int n = r.nextInt(62);
                    System.out.print(pardStore[n]);
                }
    
            /********* End *********/
        }
    }

    第5关:Date类和SimpleDateFormat类的用法

      1、编程要求:

    • 编写测试类,算一下你的出生日期到2020年10月1日总共有多少天;

    • 具体输出要求请看测试说明。

      2、测试说明:

      测试输入:

      1999-09-01

      预期输出:

      你的出生日期距离2020年10月1日:7701天

      3、代码展示:

    package case5;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Scanner;
    
    public class DateTest {
        public static void main(String[] args) throws ParseException {
            // 键盘录入你的出生年月日 格式为yyyy-MM-dd
            // 把该字符串转换为一个日期
            // 通过该日期得到一个毫秒值
            // 获取2020年10月1日的毫秒值
            // 两者想减得到一个毫秒值
            // 把该毫秒值转换为天 打印输出
            Scanner sc = new Scanner(System.in);
            String line = sc.nextLine();
            /********* Begin *********/
            //        将字符串转换为date类型
            SimpleDateFormat StoDate = new SimpleDateFormat("yyyy-MM-dd");
            Date birthdayDate = StoDate.parse(line);
             
           //        获取当前日期
            Date nowDate = StoDate.parse("2020-10-01");
           //        转为毫秒值进行换算
            long nowSecond = nowDate.getTime();
            long birthdaySecond = birthdayDate.getTime();
            long second = nowSecond-birthdaySecond;
            System.out.println("你的出生日期距离2020年10月1日:"+second/1000/60/60/24+"天");
            /********* End *********/
        }
    }

    第6关:Math类

      1、编程要求:

    • 编写测试类MathTest,输入4int类型数值,7double类型数值;

    • 分别输出第一个数的平方根,第二个数的立方根,第三个数的第四个数次方,第五个数和第六个数的最大值、最小值,第七个数的绝对值,第八个数的ceil值,第九个数的floor值,第十个数的rint值,第十一个数的round值。

      2、测试说明:

      测试输入:

      25

      27

      4

      3

      3.5

      5.5

      -8.8

      10.8

      9.6

      10.62

      11.51

      预期输出:

      5.0

      3.0

      64.0

      5.5

      3.5

      8.8

      11.0

      9.0

      11.0

      12

      3、代码展示:

    package case6;
    
    import java.util.Scanner;
    import java.lang.Math;
    
    public class MathTest {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int a1 = sc.nextInt();
            int a2 = sc.nextInt();
            int a3 = sc.nextInt();
            int a4 = sc.nextInt();
            double a5 = sc.nextDouble();
            double a6 = sc.nextDouble();
            double a7 = sc.nextDouble();
            double a8 = sc.nextDouble();
            double a9 = sc.nextDouble();
            double a10 = sc.nextDouble();
            double a11 = sc.nextDouble();
            /********* Begin *********/
             System.out.println(Math.sqrt(a1));
             System.out.println(Math.cbrt(a2));
             System.out.println(Math.pow(a3,a4));
             System.out.println(Math.max(a5,a6));
             System.out.println(Math.min(a5,a6));
             System.out.println(Math.abs(a7));
             System.out.println(Math.ceil(a8));
             System.out.println(Math.floor(a9));
             System.out.println(Math.rint(a10));
             System.out.println(Math.round(a11));
            /********* End *********/
        }
    }

     

  • 相关阅读:
    React Native 使用 react-native-webview 渲染 HTML
    如何对 React 函数式组件进行优化?
    如何在前端中使用protobuf?
    Grunt之预处理
    基于Hooks 的 Redux 速成课
    AssemblyScript 入门指南
    webpack常用构建优化总览
    如何在前端中使用protobuf(node篇)
    哪种编程语言最适合区块链?
    hdu 相遇周期
  • 原文地址:https://www.cnblogs.com/MurasameLory-chenyulong/p/13731903.html
Copyright © 2011-2022 走看看