目录
前言
面向对象
什么是面向对象?
特点
猴子吃桃
思路分析:
斐波那契数列
思路分析:
将对象作为参数传递给方法
总结
前言
面向对象基础部分学习时的练习题总结。
面向对象
什么是面向对象?
面向对象就是把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。
特点
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 个
代码:
代码语言:javascript复制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时,斐波那契数是前两个数之和
代码:
代码语言:javascript复制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()方法,调用完毕后输出当前半径值。
代码:
代码语言:javascript复制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("radiustarea");
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());
}
}
}
输出结果:
总结
国庆假期已过,不能停下学习的脚步,继续努力!