java作业4 类与对象 共11题

将一个数组逆序输出

可以通过循环遍历数组元素,将数组中的元素从后向前依次输出,即可实现将一个数组逆序输出。具体实现可以使用两个指针分别从数组的首尾开始遍历,交换它们所指向的元素的位置,并将指针向中间移动,直到两个指针相遇为止。

public class ReverseArray {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5};

        // 反转数组
        for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }

        // 输出反转后的数组
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}
运行程序后会输出以下结果:

5 4 3 2 1

定义和初始化一个5个元素的数组,利用冒泡排序方法对数组进行排序,并将排序前和排序后的数组元素分别打印出来。

冒泡排序是一种简单的排序算法,其基本思想是通过不断交换相邻元素的位置,将较大(或较小)的元素逐步“冒泡”到数组的末尾。具体实现时,可以使用两层循环,外层循环控制需要比较的轮数,内层循环依次比较相邻元素的大小,并交换它们的位置。

代码示例:

public class BubbleSort {
    public static void main(String[] args) {
        int[] arr = {5, 3, 1, 4, 2};

        // 冒泡排序
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }

        // 输出排序前的数组
        System.out.print("排序前的数组:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println();

        // 输出排序后的数组
        System.out.print("排序后的数组:");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}
运行程序后会输出以下结果:

排序前的数组:5 3 1 4 2 
排序后的数组:1 2 3 4 5

编写一个类Rect,Rect类里包含两个函数,一个用来计算矩形面积,一个用来计算矩形周长,再编写测试类Test,Test里面包含主函数,并在主函数里利用Rect申明对象,分别计算对象的面积和周长。

package chap02;

class Rect {
    private double length;
    private double width;
    public Rect(double length,double width) {
    	this.length=length;
    	this.width=width;
    }
    public double perimeter(){
    	return (length+width)*2;
    }
    public double area(){
    	return length*width;
    }
    
}
public class Test1 {
    public static void main(String[] args) {
       Rect sc=new Rect(3.0,4.0);
       System.out.println("矩形的周长为:"+sc.perimeter());
       System.out.println("矩形的面积为:"+sc.area());
    }
}

运行程序后会输出以下结果:

矩形的面积是:12.0
矩形的周长是:14.0

定义一个矩形类,类里包含长、宽、周长、面积四个属性,计算周长和面积的方法各一个,编写测试类,利用矩形类申明两个对象并进行初始化,分别初始化长和宽,然后计算这两个矩形的面积和周长,通过屏幕打印出来。

public class Rectangle {
    private double length; // 矩形的长度
    private double width; // 矩形的宽度
    private double perimeter; // 矩形的周长
    private double area; // 矩形的面积

    public Rectangle(double length, double width) { // 构造方法,用于初始化矩形的长度和宽度
        this.length = length;
        this.width = width;
        this.perimeter = 2 * (length + width);
        this.area = length * width;
    }

    public double getPerimeter() { // 计算矩形的周长
        return perimeter;
    }

    public double getArea() { // 计算矩形的面积
        return area;
    }
}

public class TestRectangle {
    public static void main(String[] args) {
        Rectangle rect1 = new Rectangle(3.0, 4.0); // 声明一个矩形对象,长为3,宽为4
        double perimeter1 = rect1.getPerimeter(); // 计算第一个矩形的周长
        double area1 = rect1.getArea(); // 计算第一个矩形的面积
        System.out.println("第一个矩形的周长是:" + perimeter1);
        System.out.println("第一个矩形的面积是:" + area1);

        Rectangle rect2 = new Rectangle(5.0, 6.0); // 声明另一个矩形对象,长为5,宽为6
        double perimeter2 = rect2.getPerimeter(); // 计算第二个矩形的周长
        double area2 = rect2.getArea(); // 计算第二个矩形的面积
        System.out.println("第二个矩形的周长是:" + perimeter2);
        System.out.println("第二个矩形的面积是:" + area2);
    }
}
运行程序后会输出以下结果:

第一个矩形的周长是:14.0
第一个矩形的面积是:12.0
第二个矩形的周长是:22.0
第二个矩形的面积是:30.0

通过定义类和对象的创建、使用,实现输出如下个人信息:“刘阳,男,身高170.0cm。”

要求:

1)定义一个People类,类体内容的变量定义部分定义了1个double类型变量 “sg” (身高)、两个字符串类型变量“xm” (姓名)、 “xb” (性别),和一个方法“rwjj” (人物简介)用来输出个人信息。

2)定义一个主类Test,并在主类中调用缺省构造方法定义一个People类的对象xPeople,要求调用rwjj方法输出以下语句“刘阳,男,身高170.0cm。”

package chap02;
class People {
   private double sg;
   private String xm;
   private String xb;
   public People(String xm,String xb,double sg){
	   this.xm=xm;
	   this.xb=xb;
	   this.sg=sg;
   }
    public void rwjj() {
    	System.out.println(xm+","+xb+","+"身高"+sg+"cm。");
    	
    }
}

public class Test {
    public static void main(String[] args) {
    		People xPeople=new People("刘阳","男",170);
    		xPeople.rwjj();
    }
}

编写程序计算某年某月有几天。其中判别闰年的条件是:能被4整除但不能被100整除的年是闰年,能被400整除的年也是闰年。用switch语句实现。

package chap02;
import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入年份:");
        int year = input.nextInt();
        System.out.print("请输入月份:");
        int month = input.nextInt();
        int days;
        switch (month) {
            case 2:
                if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
                    days = 29;
                } else {
                    days = 28;
                }
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                days = 30;
                break;
            default:
                days = 31;
                break;
        }

        System.out.println(year + "年" + month + "月有" + days + "天。");
    }
}

定义一个Employee类,在该类中定义了三个私有成员变量name、salary和id分别用来记录员工的姓名、薪水和员工编号信息,还定义了一个带参数的构造方法用来初始化员工的姓名、薪水和员工编号信息。

2)定义主类TestPrivateDemo,在主类中调用带参数的构造方法生成一个对象e,并输出该对象的姓名、员工编号和薪水信息。输出信息如下:“员工编号:1,姓名:张三,年薪: 50000.0”。

  1. 自行编程,掌握通过定义setter方法,正确设置私有变量值的方法。

算法分析:

1)在Emplyee类中定义可以设置name、salary和id变量值的setter方法。

2)在主类TestPrivateDemo中,通过调用三个setter方法重新设置三个成员变量的值,并输出下列信息:“员工编号:2,姓名:李四,年薪:25000.0”。

package chap02;
      class Employee {
    private String name;
    private double salary;
    private int id;

    public Employee(String name, double salary, int id) {
        this.name = name;
        this.salary = salary;
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public double getSalary() {
        return salary;
    }
}

public class TestPrivateDemo {
    public static void main(String[] args) {
        Employee e = new Employee("张三", 50000.0, 1);
        System.out.println("员工编号:" + e.getId() + ",姓名:" + e.getName() + ",年薪:" + e.getSalary());
        e.setId(2);
        e.setName("李四");
        e.setSalary(25000.0);
        System.out.println("员工编号:" + e.getId() + ",姓名:" + e.getName() + ",年薪:" + e.getSalary());
    }
}

编程求1+2!+3!+…+10! 的和。

public class FactorialSum {
    public static void main(String[] args) {
        long sum = 0;
        long factorial = 1;

        for (int i = 1; i <= 10; i++) {
            factorial *= i;
            sum += factorial;
        }

        System.out.println("1+2!+3!+...+10!的和为:" + sum);
    }
}
运行程序后,打印出1+2!+3!++10!的和。

编写判断输入的年份是否是闰年的程序,闰年的条件是能被4整除,但不能被100整除;能被4整除,又能被400整除。要求用If语句的嵌套实现。

package chap02;
import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("请输入一个年份:");
        int year = input.nextInt();
        if (year % 4 == 0) {
            if (year % 100 == 0) {
                if (year % 400 == 0) {
                    System.out.println(year + "年是闰年");
                } else {
                    System.out.println(year + "年不是闰年");
                }
            } else {
                System.out.println(year + "年是闰年");
            }
        } else {
            System.out.println(year + "年不是闰年");
        }
    }
}

编写程序,输出以下图案。

                 *                     

                ***                    

               *****                   

              ******* 
package chap02;
public class Test {
    public static void main(String[] args) {
    		for(int i=1;i<=4;i++) {
    			for(int j=1;j<=2*i-1;j++) {
    				System.out.print("*");
    			}
    			System.out.println();
    		}
    		
    }
}

定义一个Employee类,在该类中定义了三个私有成员变量name、salary和id分别用来记录员工的姓名、薪水和员工编号信息,还定义了一个带参数的构造方法用来初始化员工的姓名、薪水和员工编号信息。

2)定义主类TestPrivateDemo,在主类中调用带参数的构造方法生成一个对象e,并输出该对象的姓名、员工编号和薪水信息。输出信息如下:“员工编号:1,姓名:张三,年薪: 50000.0”。

  1. 自行编程,掌握通过定义setter方法,正确设置私有变量值的方法。

算法分析:

1)在Emplyee类中定义可以设置name、salary和id变量值的setter方法。

2)在主类TestPrivateDemo中,通过调用三个setter方法重新设置三个成员变量的值,并输出下列信息:“员工编号:2,姓名:李四,年薪:25000.0”。

以上是完成数据封装的问题,完成了一个可以设置和输出员工信息的程序,现在要在此基础上进行改进,要求增加能设置和输出公司经理信息的程序,具体要求如下:

1)公司经理的薪水是基本工资与奖金之和。

2)增加一个可以设置和输出职务信息的功能。

3)其余信息项与普通员工一致。

算法分析:

1)定义父类Employee,Employee中中定义可以设置和获取name、salary和id变量值的setter方法和getter方法。

2)定义子类Manager,Manager中覆盖父类的getSalary()方法,使得最后的工资是基本工资和奖金之和。

3)在子类Manager中再定义一个可以设置职务信息的setter方法,同时定义一个可以获取职务信息的getter方法。

4)在主类TestInheritanceDemo中,先创建父类Employee的一个对象,并通过通过调用三个setter方法重新设置三个成员变量的值,并输出下列信息:“员工编号:1,姓名:王笑,年薪:20000.0”。然后创建子类Manager的一个对象,并通过调用四个setter和getter方法,输出下列信息:“员工编号:2,姓名:李东,职务:经理,年薪:50000.0”

package chap02;
    class Employee {
    private String name;
    private double salary;
    private int id;

    public Employee(String name, double salary, int id) {
        this.name = name;
        this.salary = salary;
        this.id = id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public double getSalary() {
        return salary;
    }

    public int getId() {
        return id;
    }
}

     class  Manager extends Employee {
    private String position;

    public Manager(String name, double salary, int id, String position) {
        super(name, salary, id);
        this.position = position;
    }

    public void setPosition(String position) {
        this.position = position;
    }

    public String getPosition() {
        return position;
    }

    public double getSalary() {
        return super.getSalary() + 30000.0;
    }
}

public class TestInheritanceDemo {
    public static void main(String[] args) {
        Employee e = new Employee("王笑", 20000.0, 1);
        System.out.println("员工编号:" + e.getId() + ",姓名:" + e.getName() + ",年薪:" + e.getSalary());

        Manager m = new Manager("李东", 20000.0, 2, "经理");
        m.setPosition("经理");
        System.out.println("员工编号:" + m.getId() + ",姓名:" + m.getName() + ",职务:" + m.getPosition() + ",年薪:" + m.getSalary());
    }
}

  • 4
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
JAVA语言与面向对象程序设计作业1 单项选择 第1 以下由for语句构成的循环执行的次数是()。 for(int i=0;true;i++); A、有语法错误,不能执行 B、无限次 C、执行1次 D、一次也不执行 答案:B 第2 以下标识符中哪项是不合法的()。 A、BigOlLong$223 B、_utfint C、$12s D、3d 答案:D 第3 执行完以下代码int [ ] x = new int[25];后,以下哪项说明是正确的()。 A、x[24]为0 B、x[24]未定义 C、x[25]为0 D、x[0]为空 答案:A 第4 若在某一个类定义中定义有如下的方法: abstract void performDial(); 该方法于()。 A、本地方法 B、最终方法 C、解态方法 D、抽象方法 答案:D 第5 以下选项中,合法的赋值语句是()。 A、a==1; B、++I; C、a=a+1=5; D、!(++a!=b--); 答案:B 第6 执行完以下代码int [ ] x = new int[5];后,以下哪项说明是正确的()。 A、x[4]为0 B、x[4]未定义 C、x[5]为0 D、x[0]为空 答案:A 第7 执行下列程序段后,m,x,y的值分别是()。 int x=2,y=4; boolean m; m=++x>y--; A、true,2,4 B、false,3,3 C、treu,3,3 D、false,2,4 答案:B 第8Java中,存放字符串常量的对象于()类对象。 A、Character B、String C、StringBuffer D、Vector 答案:B 第9 设有下面的一个类定义: class AA {static void Show(){System.out.println("我喜欢Java!"); }} class BB {void Show(){System.out.println("我喜欢C++!"); }}若已经使用AA类创建对象a和BB类创建对象b,则下面哪一个方法调用是正确的:()。 A、a.Show( ) B、AA.Show( ); b.Show( ); BB.Show( ); C、AA.Show( ) D、a.show( ); b.show( ); ; bb.show( ); 答案:C 第10 以下for循环的执行次数是()。 for(int x=0;(x==0)&(x>4);x++); A、无限次 B、一次也不执行 C、执行4次 D、执行3次 答案:B 多项选择11 如下哪些字串是Java中的标识符? A、fieldname B、super C、3number D、#number E、mybooks 答案:A"E 第12 Java中如下哪个约束符是正确的? A、private B、public C、protected D、protect E、friend 答案:A"B"C 第13 如下哪些是Java中有效的关键字? A、const B、NULL C、false D、this E、native 答案:A"C"D"E 判断 第14 对象可以赋值,只要使用赋值号(等号)即可,相当于生成了一个性与赋值对象相 同的新对象。 答案:错误 第15 Java的字符类型采用的是ASCII编码。 答案:正确 第16 Java的各种数据类型占用固定长度,与具体的软硬件平台环境无关。 答案:正确 第17 Vector类中的对象不能是简单数据类型。 答案:正确 第18 Java程序里,创建新的类对象用关键字new,回收无用的类对象使用关键字free。 答案:错误 第19 类及其性、方法可以同时有一个以上的修饰符来修饰。 答案:正确 第20 有的类定义时可以不定义构造函数,所以构造函数不是必需的。 答案:错误 JAVA语言与面向对象程序设计作业2 单项选择 第1 下面的语句的作用是:()。 Vector MyVector = new Vector(100,50); A、创建一个数组类对象MyVector,有100个元素的空间,每个元素的初值为50 B、创建一个向量类对象MyVector,有100个元素的空间,每个元素的初值为50 C、创建一个数组类对象MyVector,有100个元素的空间,若空间使用完时,以50个 元素空间单位递增 D、创建一个向量类对象MyVector,有100个元素的空间,若空间使用完时,以50个 元素空间单位递增 答案:D 第2 下面程序段的输出结果是( )。 String MyStr = "Hello,"; MyStr = MyStr+"Guys!"; System.out.println(MySt

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值