Java程序设计(2021春) 您所在的位置:网站首页 java程序设计韩建平周梦熊课后答案 Java程序设计(2021春)

Java程序设计(2021春)

2023-11-12 20:23| 来源: 网络整理| 查看: 265

Java程序设计(2021春)——第三章类的重用课后题(选择题+编程题)答案与详解

目录Java程序设计(2021春)——第三章类的重用课后题(选择题+编程题)答案与详解第三章选择题3.0 导学3.1.1-3.1.2 类继承的概念和语法3.1.3 隐藏和覆盖3.2 Object类3.3 终结类与终结方法T2题面答案详解T3题面答案详解T4题面答案详解T6题面答案详解3.4 抽象类T1题面答案详解3.5 泛型T1题面答案详解3.6 类的组合3.7 小结第三章编程题T1 唯一路径题面样例输入:样例输出:样例解释思考和详解具体代码T2 矩阵螺旋填充题面样例输入:输出:样例解释思考和详解具体代码T3 完美平方数题面样例输入样例输出样例解释思考与详解具体代码

第三章选择题

Tip:选择题部分我只针对部分我出错的或我认为有价值的题目在此整理。

3.0 导学

3.1.1-3.1.2 类继承的概念和语法

3.1.3 隐藏和覆盖

3.2 Object类

3.3 终结类与终结方法 T2 题面

如果需要抛出异常,可能会使用下面哪些关键字

A final

B finally

C finalize

D catch

答案

B D

详解

选项中和异常相关的只有finally和catch。(其实这应该是没讲过,笔者目前还没接触过相关内容,先mark一下)

T3 题面

下面程序的运行结果是(忽略换行)

class C{ final public int methos(){ System.out.println("a"); return 0; } } public class A extends C{ final public int method (int x){ System.out.println(x); return 0; } public static void main(String[] args){ A a = new A(); C c = new C(); a.method(2); c.method(); } }

A 2 2

B 2 a

C 运行错误,因为C的final方法不能被重写

D 运行错误,因为A重写method时参数表不一样

答案

B

详解

由于参数表不一样,因此并非重写方法,而是定义新方法。运行结果应该为2 a。

T4 题面

不能用来修饰interface的有

A private

B public

C final

D static

答案

A C D

详解

可以修饰interface的只有public。可以修饰class的有public final abstract。

T6 题面

final类和方法的存在处于以下哪些方面的考虑

A 安全方面

B 设计方面

C 代码结构简单

D 能够提高运行效率

答案

A B D

详解

详见郑莉老师《Java语言程序设计(第2版)》118-119页。

3.4 抽象类 T1 题面

下面关于抽象类和抽象方法的说法中,错误的是

A 抽象类可以包含非抽象方法

B 抽象类可以包含接口方法

C 抽象类可以包含抽象方法

D 抽象类不可以被实例化

答案

B

详解

只有接口类可以包含接口方法。

3.5 泛型 T1 题面

Java泛型机制的优点有

A 可以使代码编写变得简单

B 比较安全

C 消除对Object类的强制类型转换=

D 使得代码运行性能增强

答案

A B C

详解

3.6 类的组合

3.7 小结

第三章编程题 T1 唯一路径 题面

给定一个M*N的网格,你需要从左上角走到右下角,每一步你只能向下移或者向右移,请计算你能走的路径个数。 输入为一行,M和N,输出为路径数

样例输入:

2 2

样例输出:

2

样例解释

思考和详解

与这道题类似的题笔者似乎在三年前做过(三年前的码力远超现在),应该是带有动态规划思想的,做起来类似广度优先搜索但是实现上不一样。具体来说就是只要给出M*N的地图,对于期中任意一格,从左上角到达该格的路径数即为该格左侧和上侧相邻两格路径数之和,因此只需要从左上角格子开始,遍历每个格子,保证遍历到每个格子的时候其左侧和上侧的格子都已知即可,具体实现的时候需要对格子边界做一点初始化。但是,本题在学堂在线oj上只得了30分,相同的思路完成与这道题类似的题得到了通过,这两题确实有差别,但是笔者思考并上网查找了很久也不知道差别在哪,如果读者有想法欢迎在评论区指出或私信我,谢谢!

具体代码 import java.util.Scanner; class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int m = in.nextInt(); int n = in.nextInt(); in.close(); int[][] arr = new int[m + 2][n + 2]; for (int i = 0; i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有