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

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

前言


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


面向对象

什么是面向对象?


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


特点


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;
    }
  }

输出结果:


2888eb8d16114b40b6f104bd4fe22ec5.png

斐波那契数列


使用递归的方法求出斐波那契数

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;
    }
  }
}

输出结果:

a89cd3655bde493abb74461b4aef20f9.png


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


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


题目要求:

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());
    }
  }

输出结果:257aefd1bd7f4076b02cbfc1b2ee386a.png


总结


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



相关文章
|
存储 编译器 测试技术
C++ 面向对象程序设计 14万字总结笔记(五)
C++ 面向对象程序设计 14万字总结笔记(五)
67 0
|
存储 编译器 C++
C++ 面向对象程序设计 14万字总结笔记(六)
C++ 面向对象程序设计 14万字总结笔记(六)
78 0
|
存储 算法 搜索推荐
C++ 面向对象程序设计 14万字总结笔记(八)
C++ 面向对象程序设计 14万字总结笔记(八)
55 0
|
6月前
|
算法 编译器 C语言
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题(上)
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题
46 3
|
6月前
|
编译器 C语言 C++
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题(中)
从C语言到C++⑥(第二章_类和对象_中篇_续)大练习(日期类)+笔试选择题
42 1
|
6月前
|
C语言 C++
从C语言到C++⑧(第二章_类和对象_下篇_续)笔试选择题和OJ题
从C语言到C++⑧(第二章_类和对象_下篇_续)笔试选择题和OJ题
39 0
|
算法 编译器 C语言
C++ 面向对象程序设计 14万字总结笔记(二)
C++ 面向对象程序设计 14万字总结笔记(二)
61 0
|
存储 算法 编译器
C++ 面向对象程序设计 14万字总结笔记(七)
C++ 面向对象程序设计 14万字总结笔记(七)
61 0
|
存储 编译器 程序员
C++ 面向对象程序设计 14万字总结笔记(三)
C++ 面向对象程序设计 14万字总结笔记(三)
66 0
|
算法 程序员 C语言
C++ 面向对象程序设计 14万字总结笔记(一)
C++ 面向对象程序设计 14万字总结笔记(一)
94 0
下一篇
无影云桌面