王彪20162321 2016-2017-2 《程序设计与数据结构》第5周学习总结

王彪 2016-2017-2 《程序设计与数据结构》第5周学习总结

教材学习内容总结

  • 1.关键概念

    • 1.面向对象程序设计的核心是类的定义,它代表了状态和行为的对象。
    • 2.变量的作用域依赖于变量声明的位置,作用域决定在哪里可以使用变量。
    • 3.对象应该是封装的,以防对数据的不适合访问。
    • 4.方法的返回值类型应该与方法头中规定的返回值类型一致。
    • 5.构造方法不能有任何的返回值,即使是void也不行。
    • .......
  • 2.类定义的结构和内容,类之间的关系,构造方法的目的结构。

  • 3.类的基本编写方式

教材学习中的问题和解决过程

  • 问题1:程序5.11的理解问题
    问题描述:程序5.11是学到现在书中出现的代码量最多的程序,RationalNumber类包含了对有理数的各种操作,包括乘法和除法。这对结对编程项目-四则运算很有帮助。
    解决途径:
   public RationalNumber (int number ,int denom){if (denom == 0)denom =1;if (denom < 0){number = number * -1;denom = denom * -1;}numerator = number;denominator = denom;reduce ();}
  • 1.运用构造函数,if条件语句,巧妙的欲先处理了分数分母为零及为负数的情况,并将值赋给成员变量,最后调用私有方法reduce.
    private void reduce (){ if (numerator != 0){int common = gcd (Math.abs(numerator),denominator);numerator = numerator / common;denominator = denominator / common;}}//--------------------------------------------------// Computes and return the greatest commom divisor of the two//--------------------------------------------------private int gcd (int num1,int num2){while (num1 != num2)if (num1 > num2)num1 = num1 - num2;elsenum2 = num2 - num1;return num1;}}
  • 2.reduce方法引用了gcd方法,这是利用逐差法求分数的最大公约数,并化简为最简形式。
        public RationalNumber multiply (RationalNumber op2){int numer = numerator * op2.getNumerator();int denom = denominator * op2.getDenominator();//int numerator2 = op2.getNumerator() * denominator;//int difference = numerator1 - numerator2;//return new RationalNumber (difference, commomDenominator);return new  RationalNumber (numer , denom);}public RationalNumber divide (RationalNumber op2){return multiply (op2.reciprocal());}
  • 3.有关除法运算,首先调用reciprocal方法将分子分母调换便于计算,再引用multiply方法,而multiply间接调用reduce来化简。
  • 问题2:关于toString方法
    详述:在第七章中就见到过toSting方法,在第五章中出现多次,于是仔细了解了一番
    在将对象传递给print或println方法时,以及将一个对象与一个字符串链接是,都会自动调用对象的toString方法。

代码调试中的问题和解决过程

  • 问题1:误在构造方法中打入return.
    1065456-20170402180304836-568227222.jpg
    解决过程:构造方法没有返回类型(甚至没有void),所以它不能返回任何值。
    补充:对返回值的概念有点模糊,论坛,里面有很形象的比喻

    • 1.为什么要用到返回值呢?比如说你想要开门,可以将返回值比作一把钥匙,你就可以开门,没有return就不能开门
    • 2.返回值就像你工作辞职的时候 你得递交辞职信 但是老板看不看就不知道了
      1065456-20170402184907742-1081221348.jpg

代码托管

1065456-20170402204034867-1373899640.jpg

上周考试错题总结

  • An array cannot hold object types.(数组中不能包含对象类型)(错误)
    数组可以保存任何的基本类型或任何对象类型。保存在数组中的值有时称为数组元素,保存的值的类型称为数组的元素类型。
  • Which of the statements is true about the following code snippet?(对于下面的代码段,说法正确的是?)

       int[] array = new int[25];array[25] = 2;
    This code will result in a run-time error. (代码会产生运行时错误)
    在Java中许多运行时错误称为异常exception,编译程序进行检查,知识查看是否有语法错误。
  • An infinite loop is not a compile-time error.(无限循环不会产生编译时错误)
    无限循环的语法无错误。
  • A while statement always executes its loop body at least once.(while语句的循环体至少会执行一次)
    while循环在布尔表达式为真是重复执行指定的语句。首先要计算表达式的值,所以有可能一次都不执行对应的语句。
  • The ___________________ statement causes execution of a loop to stop, and the statement following the loop to be subsequently executed.(_________ 语句会导致退出循环,然后顺序执行循环后面的语句)
    break语句对循环的影响类似在switch语句中,即终止循环的执行,转去执行循环之后的语句,continue语句类似break,但会再次计算循环条件,如果仍为真,则再次执行循环体。

    结对及互评

  • 上周博客互评情况
    • 20162327王旌含
    • 四则运算深度思考学习,在上周基础上根据本周内容优化代码(上周的思路很幼稚,还有待改进)
  • 上周博客互评情况
    • 20162303
    • 20162329

其他(感悟、思考等,可选)

这章的学习并配合视频的学习让我对对象和类的概念有了很好的理解,第七章的不解也有所改变,类的学习,让我在结对编程项目中有了更好的思路,现在回想起当时的...感觉就在菜鸡互啄,很尴尬,虽然现在看来当时有点搞笑,但也很佩服自己,至少能想到是不?

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行30篇400小时
第一周070/2001/220/20
第二周300/5002/430/38
第三周620/10003/751/60
第四周1200/2005/980/90
第五周1500/5006/1100/120
第六周000/10000/1100/120
第七周000/13000/1300/120

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难,软件工程 估计方法

  • 计划学习时间:XX小时

  • 实际学习时间:XX小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表)

参考资料

  • 《Java程序设计与数据结构教程(第二版)》

  • 《Java程序设计与数据结构教程(第二版)》学习指导
  • ...

转载于:https://www.cnblogs.com/wbiao21/p/6657893.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/291018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntukylin14安装ns-allinone-2.35教程(虚拟机ubuntu同理)

准备材料&#xff1a; 1.ubuntukylin14&#xff0c;百度进官网自行下载&#xff1b; 2.ns-allinone-2.35.tar.gz&#xff0c;百度进官网自行下载&#xff1b; 3.虚拟机&#xff1a;vmwareworkstation&#xff08;可选&#xff09;. 4.不推荐windows环境下的cygwinns2&#xff0…

C语言之理解(*(void (*)())0)()和signal函数

1、需要理解的表达式 计算机启动的时候,硬件将要调用首地址为0位置的子例程,表达式如下 (*(void (*)())0)(); 2、解释 我们知道void (*f)() f是指向返回值为void类型的函数 因此,(void (*)())表示指向返回值为void类型的函数的指针的类型强制转换符 我们调用函数指针的时…

c语言指针索引数组,C语言数组指针表示法

指针在处理数组时很有用&#xff0c;我们可以用指针指向已有的数组&#xff0c;也可以从堆上分配内存然后把这块内存当做一个数组使用。数组表示法和指针表示法在某种意义上可以互换。不过&#xff0c;它们并不完全相同&#xff0c;后面的“数组和指针的差别”中会详细说明。单…

关于我自己的三个层次

有时候会意识到自己不够聪明&#xff0c;然后在把自己同那些大家相比时会感到自己的渺小&#xff0c;比如说博弈论专家纳什在20世界50年代就弄清楚的博弈论我现在学起来还是感觉很晦涩难懂&#xff0c;这就是自己的天分确实不是很好的直接证明。 天分好不好不是决定性因素&…

C# 使用AggregateException 信息

为了得到所有失败任务的异常信息&#xff0c;可以将 Task.WhenAll 返回的结果写到一个Task 变量中。这个任务会一直等到所有任务都结束。否则&#xff0c;仍然可能错过抛出的异常。上一小节中&#xff0c;catch 语句只检索到第一个任务的异常。不过&#xff0c;现在可以访问外部…

简单动态规划问题分析

例题&#xff1a; 1022: 菜鸟和大牛&#xff08;csuoj&#xff09; 像这一类问题&#xff0c;首先不管是属于什么类型的&#xff0c;如果是按照题目的思路一步步走下来&#xff0c;然后运行&#xff0c;最后肯定是要超时的&#xff0c;究其原因&#xff0c;它的时间复杂度很不合…

Android之内置和外置sdcard路径显示并且写入数据

1、效果图片 2、部分代码 package com.example.sdcardcheck;import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.lang.reflect.Array; import java.lang.…

数据挖掘——数据仓库

虽然存在数据仓库并不是数据挖掘的先决条件&#xff0c;但实际上&#xff0c;若能访问数据仓库&#xff0c;数据挖掘的任务就会变得容易的多。 数据仓库的主要目标是增加决策过程的“情报”和此过程的相关人员的知识。数据仓库对不同的人来说有不同的意义。 数据仓库是一个集成…

c2000 汇编语言指令,C2000系CMD文件的配置理解

马上注册&#xff0c;结交更多好友&#xff0c;享用更多功能&#xff0c;让你轻松玩转社区。您需要 登录 才可以下载或查看&#xff0c;没有帐号&#xff1f;注册x推荐CMD的专业名称叫链接器配置文件&#xff0c;是存放链接器的配置信息的&#xff0c;我们简称为命令文件&#…

OxyPlot 导出图片及 WPF 元素导出为图片的方法

OxyPlot 导出图片及 WPF 元素导出为图片的方法目录OxyPlot 导出图片及 WPF 元素导出为图片的方法一、OxyPlot 自带导出方法二、导出 WPF 界面元素的方法三、通过附加属性来使用独立观察员 2022 年 2 月 26 日最近有个需求&#xff0c;就是将 OxyPlot 图形导出图片。经过尝试&am…

java实现各种算法

package sortAlgorithm;import java.io.File;import java.io.IOException;import java.sql.Time;import java.util.Random;* author sky* 该类给出各种排序算法public class sort{private static Integer[] elem(int n){int Nn;Random randomnew Random();Integer elem[]new In…

BDB (Berkeley DB)简要数据库(转载)

使用最近DBD。然后搜了下相关资料&#xff0c;首先公布的是一门科学&#xff1a; 转会http://www.javaeye.com/topic/202990 DB综述DB最初开发的目的是以新的HASH訪问算法来取代旧的hsearch函数和大量的dbm实现&#xff08;如AT&T的dbm&#xff0c;Berkeley的ndbm。GNU项目…

C语言之rand()和srand()函数

1、rand()、srand()函数介绍 srand 初始化随机种子,rand 产生随机数 定义函数:int rand(void) 函数功能:产生随机数 函数说明:rand的内部实现是用线性同余法做的,不是真的随机数,因为其周期特别长,一定的范围里可看成是随机的。rand()会返回一随机数值,范围在0至RAND_…

delphi中利用Indy的TIdFtp控件实现FTP协议

2019独角兽企业重金招聘Python工程师标准>>> delphi中利用Indy的TIdFtp控件实现FTP协议版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。现在很多应用都需要上传与下载大型文件&#xff0c;通过HTTP方式上传大文件有一定的局限性。幸好FT…

一篇文章了解Liquid模版引擎

背景平常比如开发个代码生成器一般是定一个模板&#xff0c;然后里面很多变量&#xff0c;根据数据生成文件。这时候模版引擎就派上了用场。下面我们来介绍下Liquid。什么是Liquid 呢&#xff0c;就像java、c#等编程语言一样&#xff0c;Liquid也是一种独立的语言&#xff0c;没…

C++之map插入数据相同的key不能覆盖value解决办法

1、问题 C里面,如果map里面插入之前的<key, value>,如果key在map里面有的话&#xff0c;不会覆盖之前的value,一般先判断之前有没有数据&#xff0c;有的话先删除&#xff0c;然后再去添加。 2、代码实现 3、运行结果

【BZOJ】【4145】【AMPPZ2014】The Prices

状压DP/01背包 Orz Gromah 容易发现m的范围很小……只有16&#xff0c;那么就可以状压&#xff0c;用一个二进制数来表示买了的物品的集合。 一种简单直接的想法是&#xff1a;令$f[i][j]$表示前$i$个商店买了状态集合为$j$的商品的最小代价&#xff0c;那么我们转移的时候就需…

Java中的String,StringBuilder,StringBuffer三者的区别

最近在学习Java的时候&#xff0c;遇到了这样一个问题&#xff0c;就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢&#xff0c;自己从网上搜索了一些资料&#xff0c;有所了解了之后在这里整理一下&#xff0c;便于大家观看&#xff0c;也便于加深自己学习…

WPF 实现人脸检测

WPF开发者QQ群此群已满340500857 &#xff0c;请加新群458041663由于微信群人数太多入群请添加小编微信号yanjinhuawechat 或 W_Feng_aiQ 邀请入群需备注WPF开发者 PS&#xff1a;有更好的方式欢迎推荐。接着上一篇利用已经训练好的数据文件,检测人脸 地址如下&#xff1a;http…

C++之函数的默认值参数说明

1、思考 今天看到C代码的时候&#xff0c;发现文件里面的函数定义和实现都有3个参数&#xff0c;特码调用的时候只有2个参数了&#xff0c;日了狗&#xff0c;java里面好像没有这种方式&#xff0c;后来才发现是默认参数 2、代码实现 3、展示结果 4、总结 注意默认参数需要写…