面向对象练习题笔记(1)

发布于:2022-11-29 ⋅ 阅读:(422) ⋅ 点赞:(0)

目录

前言

面向对象

什么是面向对象?

特点

猴子吃桃

思路分析:

 斐波那契数列

思路分析:

将对象作为参数传递给方法

总结


前言

        面向对象基础部分学习时的练习题总结。

面向对象

什么是面向对象?

        面向对象就是把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。

特点

1)封装

2)继承

3)多态

 

猴子吃桃

有一堆桃子,猴子第一天吃了其中的一半多一个,以后猴子每天都会吃剩下桃子中的一半多一个。到第10天时,猴子正想吃时,发现只有1个桃子了。

问:最初有多少个桃子

思路分析:

1)day = 10, 有一个桃子

2)day = 9, 有(day10 + 1) * 2 = 4 个桃子

3)day = 8, 有(day9 + 1) * 2 = 10 个桃子

4)规律:前一天的桃子 = (后一天的桃子 + 1) * 2 个

代码:

public class MonkeyAndPeach {
	public static void main(String[] args) {
		
		AA a = new AA();
		int number = a.peach(1);
		if(number != 0) {
			System.out.println("最初有" + number + "个桃子");
		}
		
	}
}

class AA{

	public int peach(int day) {
		if(day == 10) { // 第10天,只有一个桃子
			return 1;
		} else if(day >= 1 && day <= 9) {
			return (peach(day + 1) + 1) * 2;
		} else {
			System.out.println("天数错误,要在 1 - 10 范围内");
			return 0;
		}
	}
}

输出结果:

 斐波那契数列

使用递归的方法求出斐波那契数
1,1,2,3,5,8,13……
 输入一个整数n,求出它的值为多少

思路分析:

1)当n = 1时,斐波那契数是1

2)当n = 2时,斐波那契数是1

3)当n > 3时,斐波那契数是前两个数之和

代码:

import java.util.Scanner;
public class RecursionExercise01 {
	public static void main(String[] args) {
		
		Scanner myScanner = new Scanner(System.in);
		System.out.println("请输入一个整数:");
		int n = myScanner.nextInt();

		AA a = new AA();
		int result = a.fibonacci(n);
		if(result != 0) {
			System.out.println("当n=" + n + "时,对应的斐波那契数为:" + result);
		}
		

	}
}

class AA {

	public int fibonacci(int n) {

		if(n >= 1) {
			if(n == 1 || n == 2) {
				return 1;
			} else {
				return fibonacci(n - 1) + fibonacci(n - 2);
			}
		} else {
			System.out.println("输入数据不符合标准,n应 >= 1");
			return 0;
		}
		
	}
}

输出结果:

可以用来查看输入不同的数时对应的斐波那契数。

将对象作为参数传递给方法

题目要求:
1.定义一个 Circle 类,包含一个double型的radius属性,
   代表圆的半径,findArea()方法返回圆的面积
2.定义一个 PassObject 类,在类中定义一个方法 printAreas(),
   该方法的定义如下:public void printAreas(Circle c , int times)
3.在 printAreas 方法中打印输出1到times之间的每个整数的半径值,以及对应面积。
   例如:times为5时,则输出半径1,2,3,4,5,以及对应的圆面积。
4.在main方法中调用printAreas()方法,调用完毕后输出当前半径值。

代码:

public class Homework12 {
	public static void main(String[] args) {

		PassObject po = new PassObject();
		po.printAreas(5);
	}
}

class Circle {
	double radius;

	public Circle() {

	}

	public Circle(double radius) {
		this.radius = radius;
	}

	public double findArea() {
		return Math.PI * radius * radius;
	}

	public void setRadius(double radius) {
		this.radius = radius;
	}
}

class PassObject {

	public void printAreas(int times) {
		System.out.println("radius\tarea");
		Circle c = new Circle();

		for(int i = 1; i <= times; i++) { // 输出1到times之间的每个整数的半径值
			c.setRadius(i); // 修改 c 对象的半径值
			System.out.println((double)i + "\t" + c.findArea());

		}
	}
}

输出结果:

总结

        国庆假期已过,不能停下学习的脚步,继续努力!

本文含有隐藏内容,请 开通VIP 后查看