Java课后练习--day08

博客包含巩固题和拔高题,涉及包练习、成员变量和方法基础题。如员工类、日期类、三角形类、数组工具类等案例需求及测试方法,还包括公民类案例。通过这些题目可巩固Java和Python开发基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

巩固题

包练习

每道作业题可以单独一个包。

在这里插入图片描述

成员变量基础题

第1题:员工

案例需求:

(1)声明员工类Employee,包含属性:编号、姓名、年龄、薪资,

(2)在测试类的main方法中,创建2个员工对象,并为属性赋值,并打印两个员工的信息。

在这里插入图片描述

参考答案:

package com.atguigu.homework1;

public class Employee {
    int id;
    String name;
    int age;
    double salary;
}
package com.atguigu.homework1;

public class Homework1 {
    public static void main(String[] args) {
        Employee employee1 = new Employee();
        employee1.id = 1;
        employee1.name = "张三";
        employee1.age = 23;
        employee1.salary = 10000.0;

        Employee employee2 = new Employee();
        employee2.id = 2;
        employee2.name = "李四";
        employee2.age = 22;
        employee2.salary = 11000.0;

        System.out.println("第" + employee1.id + "个员工的编号:" + employee1.id + ",姓名:" + employee1.name + ", 年龄:" + employee1.age + ", 薪资:" + employee1.salary);
        System.out.println("第" + employee2.id + "个员工的编号:" + employee2.id + ",姓名:" + employee2.name + ", 年龄:" + employee2.age + ", 薪资:" + employee2.salary);
    }
}

第2题:日期类

案例需求:

(1)声明一个日期类MyDate,包含属性:年、月、日

(2)在测试类的main方法中,创建3个日期对象,一个是你的出生日期,一个是来尚硅谷的日期,一个是毕业的日期,并打印显示

参考答案:

package com.atguigu.homework2;

public class MyDate {
    int year;
    int month;
    int day;
}
package com.atguigu.homework2;

public class Homework2 {
    public static void main(String[] args) {
        MyDate birthday = new MyDate();
        birthday.year = 2000;
        birthday.month = 5;
        birthday.day = 5;

        MyDate comAtGuiGu = new MyDate();
        comAtGuiGu.year = 2024;
        comAtGuiGu.month = 3;
        comAtGuiGu.day = 28;

        MyDate graduationDate = new MyDate();
        graduationDate.year = 2023;
        graduationDate.month = 6;
        graduationDate.day = 18;

        System.out.println("我的出生日期是:" + birthday.year + " 年 " + birthday.month + " 月 " + birthday.day + " 日");
        System.out.println("我来尚硅谷的日期是:" + comAtGuiGu.year + " 年 " + comAtGuiGu.month + " 月 " + comAtGuiGu.day + " 日");
        System.out.println("我大学毕业日期:" + graduationDate.year + " 年 " + graduationDate.month + " 月 " + graduationDate.day + " 日");
    }
}

成员方法基础题

第3题:三角形

案例需求:

(1)声明一个三角形类Triangle,包含属性:a,b,c,都是double类型,表示三条边,包含几个方法:

  • boolean isTriangle():判断是否是一个三角形

  • boolean isRightTriangle():判断是否是一个直角三角形

  • boolean isIsoscelesTriangle():判断是否是一个等腰三角形

  • boolean isEquilateralTriangle():判断是否是一个等边三角形

  • double area():根据三条边,用海伦公式求面积

  • double perimeter():求周长

(2)在测试类的main方法中创建三角形对象,将三角形的三条边设置为3,4,5,调用方法测试。

参考答案:

package com.atguigu.homework3;

public class Triangle {
    double a;
    double b;
    double c;

    //判断是否是一个三角形
    boolean isTriangle() {
        if (a + b >= c || a + c >= b || b + c >= a) return true;
        return false;
    }

    //判断是否是一个直角三角形
    boolean isRightTriangle() {
        if (a * a + b * b == c * c || a * a == b * b + c * c || a * a + c * c == b * b) return true;
        return false;
    }

    //判断是否是一个等腰三角形
    boolean isIsoscelesTriangle() {
        if (a == b || a == c || b == c) return true;
        return false;
    }

    //判断是否是一个等边三角形
    boolean isEquilateralTriangle() {
        if (a == b && a == c && b == c) return true;
        return false;
    }

    //根据三条边,用海伦公式求面积
    double area() {
        double p = (double) (a + b + c) / 2;
        return Math.sqrt(p * (p - a) * (p - b) * (p - c));
    }

    //求周长
    double perimeter() {
        return a + b + c;
    }
}

package com.atguigu.homework3;

public class Homework3 {
    public static void main(String[] args) {
        Triangle triangle1 = new Triangle();
        triangle1.a = 3;
        triangle1.b = 4;
        triangle1.c = 5;


        System.out.println("triangle1是否是一个三角形:" + triangle1.isTriangle());
        System.out.println("triangle1是否是一个直角三角形:" + triangle1.isRightTriangle());
        System.out.println("triangle1是否是一个等腰三角形:" + triangle1.isIsoscelesTriangle());
        System.out.println("triangle1是否是一个等边三角形:" + triangle1.isEquilateralTriangle());
        System.out.println("triangle1的面积是:" + triangle1.area());
        System.out.println("triangle1的周长:" + triangle1.perimeter());
    }
}

第4题:日期类

案例需求:

(1)声明一个日期类MyDate,

  • 包含属性:年、月、日
  • boolean isLeapYear():判断是否是闰年
  • String monthName():根据月份值,返回对应的英语单词
  • int totalDaysOfMonth():返回这个月的总天数
  • int totalDaysOfYear():返回这一年的总天数
  • int daysOfTheYear():返回这一天是当年的第几数

(2)在测试类的main方法中,创建MyDate对象,赋值为当天日期值,调用方法测试。

参考答案:

package com.atguigu.homework4;

public class MyDate {
    int year;
    int month;
    int day;

    //判断是否是闰年
    boolean isLeapYear() {
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) return true;
        return false;
    }

    //根据月份值,返回对应的英语单词
    String monthName() {
        String[] monthNames = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
        return monthNames[month - 1];
    }

    //返回这个月的总天数
    int totalDaysOfMonth() {
        if (month >= 1 && month <= 12) {
            if (month == 4 || month == 6 || month == 9 || month == 11) return 30;
            else if (month == 2) {
                if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) return 29;
                return 28;
            } else return 31;
        }
        return 0;    //返回0表示月份输入错误
    }

    //返回这一年的总天数
    int totalDayOfYear() {
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) return 366;
        return 365;
    }

    //返回这一天是当年的第几天
    int daysOfTheYear() {
        int days = day;
        for (int i = 1; i < month; i++) {
            if (i == 4 || i == 6 || i == 9 || i == 11) {
                days += 30;
            } else if (i == 2) {
                if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                    days += 29;
                } else {
                    days += 28;
                }
            } else {
                days += 31;
            }
        }
        return days;
    }
}
package com.atguigu.homework4;

public class Homework4 {
    public static void main(String[] args) {
        MyDate date1 = new MyDate();
        date1.year = 2024;
        date1.month = 4;
        date1.day = 9;

        System.out.println(date1.year+"是否是闰年"+date1.isLeapYear());
        System.out.println(date1.month + "月对应的英文单词是" + date1.monthName());
        System.out.println(date1.month + "月的总天数是:" + date1.totalDaysOfMonth());
        System.out.println(date1.year + "年的总天数是:" + date1.totalDayOfYear());
        System.out.println(date1.year + " 年 " + date1.month + " 月 " + date1.day + " 日是 " + date1.year + " 年的第 " + date1.daysOfTheYear() + " 天");
    }
}

第5题:数组工具类

案例需求:

(1)声明一个数组工具类ArrayTools,包含如下方法:

  • int sum(int[] arr):求所有元素总和
  • int max(int[] arr):求所有元素的最大值
  • int indexOf(int[] arr, int value):查找value在arr数组中第一次出现的下标,如果不存在返回-1
  • int lastIndexOf(int[] arr, int value):查找value在arr数组中最后一次出现的下标,如果不存在返回-1

(2)在测试类的main方法中,调用方法测试,例如:

int[] arr = {1,2,10,4,5,10,7,8,9,10};

参考答案:

package com.atguigu.homework5;

public class ArrayTools {

    //求所有元素和
    int sum(int[] arr) {
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        return sum;
    }

    //求所有元素最大值
    int max(int[] arr) {
        int maxNum = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if (maxNum < arr[i]) maxNum = arr[i];
        }
        return maxNum;
    }

    //查找value在arr数组中第一次出现的下标。如果不存在返回-1
    int indexOf(int[] arr, int value) {
        int index = -1;
        for (int i = 0; i < arr.length; i++) {
            if (value == arr[i]) return i;
        }
        return index;
    }

    //查找value在arr数组中最后一次出现的下标,如果不存在返回-1
    int lastIndexOf(int[] arr, int value) {
        int index = -1;
        for (int i = 0; i < arr.length; i++) {
            if (value == arr[i]) index = i;
        }
        return index;
    }
}
package com.atguigu.homework5;

public class Homework5 {
    public static void main(String[] args) {
        ArrayTools tools= new ArrayTools();
        int[] arr = {1,2,10,4,5,10,7,8,9,10};

        System.out.println("所有元素总和是:" + tools.sum(arr));
        System.out.println("所有元素的最大值是" + tools.max(arr));
        System.out.println("在数组中第一次出现10的下标" + tools.indexOf(arr, 10));
        System.out.println("在数组中最后一次出现10的下标" + tools.lastIndexOf(arr, 10));
        System.out.println("在数组中最后一次出现6的下标" + tools.lastIndexOf(arr, 6));

    }
}

拔高题

第6题:公民类

案例需求:

(1)声明一个日期类MyDate,

  • 包含属性:年、月、日,
  • 包含String dateToString()方法,返回“xxxx年xx月xx日”

(2)声明公民类Citizen,

  • 包含属性:姓名,生日,身份证号,其中姓名是String类型,生日是MyDate类型,身份证号也是String类型。
  • 包含String getInfo()方法,返回“姓名:xx,身份证号码:xx,生日:xxxx年xx月xx日”
  • 包含void setBirthday(int year, int month, int day):设置生日

(3)在测试类的main方法中,创建你们家庭成员的几个对象,并打印信息。

参考答案:

package com.atguigu.homework6;

public class MyDate {
    int year;
    int month;
    int day;

    String dateToString() {
        return year + "年" + month + "月" + day + "日";
    }
}
package com.atguigu.homework6;

public class Citizen {
    String name;
    MyDate birthday;
    String id;

    String getInfo() {
        return "姓名:" + name + ",身份证号:" + id + ",生日" + birthday.dateToString();
    }

    //设置生日
    void setBirthday(int year, int month, int day) {
        birthday = new MyDate();
        birthday.year = year;
        birthday.month = month;
        birthday.day = day;
    }
}
package com.atguigu.homework6;

public class Homework6 {
    public static void main(String[] args) {
        Citizen people = new Citizen();
        people.name = "张云志";
        people.setBirthday(2000, 5, 5);
        people.id = "340721200005055436";

        System.out.println(people.getInfo());
    }
}

第7题:数组工具类

案例需求:

(1)声明一个数组工具类ArrayTools,包含如下方法:

  • int max(int[] arr):求所有元素的最大值
  • int valueCount(int[] arr, int value):查找value在arr数组中出现的次数,如果不存在返回0
  • int[] maxIndex(int[] arr):找出所有最大值
  • void sort(int[] arr):实现元素从小到大排序
  • void reverse(int[] arr, int start, int end):反转[start,end]范围内的元素
  • int[] copyOf(int[] arr, int newLength):复制arr数组,新数组的长度newLength。如果newLength<=arr.length,则复制arr数组的[0, newLength-1]范围的元素,如果newLength>arr.length,则复制arr数组的所有元素到新数组,剩下的元素则默认就可以。
  • boolean equals(int[] arr1, int[] arr2):判断两个数组的长度和元素是否都相等,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。
  • void fill(int[] arr, int start, int end, int value) :将arr数组[start,end]范围的元素赋值为value。
  • String toString(int[] arr):将元素拼接为"{元素1,元素2,…}"的字符串返回。

(2)在测试类的main方法中,调用方法测试例如:

int[] arr = {1,2,10,4,5,10,7,8,9,10};

参考答案:

public class ArrayTools {

    //求所有元素的最大值
    int max(int[] arr) {
        int max = 0;
        for (int i = 0; i < arr.length; i++) {
            if (max < arr[i]) max = arr[i];
        }
        return max;
    }

    //查找value在arr数组中出现的次数,如果不存在返回0
    int valueCount(int[] arr, int value) {
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == value) count++;
        }
        return count;
    }

    //找出所有最大值
    int[] maxIndex(int[] arr) {
        int max = max(arr);
        int[] maxnum=new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            if (max==arr[i]){
                maxnum[i]=max;
            };
        }
        return maxnum;
    }

    //实现元素从小到大排序
    void sort(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[i] > arr[i + 1]) {
                    int x = arr[i];
                    arr[i] = arr[i + 1];
                    arr[i + 1] = x;
                }
            }
        }
    }


    //反转[start,end]范围内的元素
    void reverse(int[] arr, int start, int end) {
        while (start < end) {
            int x = arr[start];
            arr[start] = arr[end-1];
            arr[end-1] = x;
            start++;
            end--;
        }
    }

    //复制arr数组,新数组的长度newLength。如果newLength<=arr.length,则复制arr数组的[0, newLength-1]范围的元素,
    // 如果newLength>arr.length,则复制arr数组的所有元素到新数组,剩下的元素则默认就可以。
    int[] copyOf(int[] arr, int newLength) {
        int[] newArr = new int[newLength];
        if (newLength <= arr.length) {
            for (int i = 0; i < newArr.length; i++) {
                newArr[i] = arr[i];
            }
        } else {
            for (int i = 0; i < arr.length; i++) {
                newArr[i] = arr[i];
            }
        }
        return newArr;
    }

    //判断两个数组的长度和元素是否都相等,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。
    boolean equals(int[] arr1, int[] arr2) {
        if (arr1.length != arr2.length) return false;
        for (int i = 0; i < arr1.length; i++) {
            if (arr1[i] != arr2[i]) return false;
        }
        return true;
    }

    //将arr数组[start,end]范围的元素赋值为value
    void fill(int[] arr, int start, int end, int value) {
        for (int i = start; i <= end; i++) {
            arr[i] = value;
        }
    }

    //将元素拼接为"{元素1,元素2,......}"的字符串返回。
    String toString(int[] arr) {
        String stringContent = "";
        for (int i = 0; i < arr.length; i++) {
            stringContent += arr[i];
            if (i < arr.length - 1) {
                stringContent += ",";

            }
        }
        return stringContent;
    }
}
import java.lang.reflect.Array;
import java.util.Arrays;

public class Homework7 {
    public static void main(String[] args) {
        ArrayTools tools = new ArrayTools();
        int[] arr = {1, 2, 10, 4, 5, 10, 7, 8, 9, 10};

        System.out.println("所有元素最大值是:" + tools.max(arr));

        System.out.println("查找10在arr数组中出现的次数,如果不存在返回0:" + tools.valueCount(arr, 10));
        System.out.println("查找6在arr数组中出现的次数,如果不存在返回0:" + tools.valueCount(arr, 6));

        /*tools.maxIndex(arr);*/
        System.out.println("找出所有最大值:" + tools.toString(tools.maxIndex(arr)));


        tools.sort(arr);
        System.out.println("实现从小到大排序:" + tools.toString(arr));

        tools.reverse(arr, 1, 6);
        System.out.println("反转后的元素为:" + tools.toString(arr));

        tools.copyOf(arr, 8);
        System.out.println("长度小于arr.length复制后的数组为" + tools.toString(tools.copyOf(arr,8)));

        tools.copyOf(arr, 12);
        System.out.println("长度大于arr.length复制后的数组为" + tools.toString(tools.copyOf(arr,12)));

        int[] arr1 = {1, 2, 10, 4, 5, 10, 7, 8, 9, 10};
        int[] arr2 = {1, 2, 10, 4, 5, 10, 7, 9, 10};
        int[] arr3 = {1, 2, 10, 4, 5, 10, 8, 8, 9, 10};
        int[] arr4 = {1, 2, 10, 4, 5, 10, 7, 8, 9, 10};
        System.out.println("判断arr1和arr数组是否相等:" + tools.equals(arr1, arr4));   //相等
        System.out.println("判断arr1和arr数组是否相等:" + tools.equals(arr, arr2));   //长度不相等
        System.out.println("判断arr1和arr数组是否相等:" + tools.equals(arr, arr3));   //内容不相等

        tools.fill(arr,1,6,8);
        System.out.println("将arr数组[1,6]范围的元素赋值为8:"+tools.toString(arr));

        System.out.println("拼接后的字符串是:" + tools.toString(arr));
    }
}

;
int[] arr2 = {1, 2, 10, 4, 5, 10, 7, 9, 10};
int[] arr3 = {1, 2, 10, 4, 5, 10, 8, 8, 9, 10};
int[] arr4 = {1, 2, 10, 4, 5, 10, 7, 8, 9, 10};
System.out.println(“判断arr1和arr数组是否相等:” + tools.equals(arr1, arr4)); //相等
System.out.println(“判断arr1和arr数组是否相等:” + tools.equals(arr, arr2)); //长度不相等
System.out.println(“判断arr1和arr数组是否相等:” + tools.equals(arr, arr3)); //内容不相等

    tools.fill(arr,1,6,8);
    System.out.println("将arr数组[1,6]范围的元素赋值为8:"+tools.toString(arr));

    System.out.println("拼接后的字符串是:" + tools.toString(arr));
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值