201723142017-2018-2《程序设计与数据结构》第六周学习总结

yiyiyi      2022-02-09     711

关键词:

20172314 2017-2018-2 《程序设计与数据结构》第六周学习总结

教材学习内容总结

  • 数组是一个含有多个值的列表,每个值存在于数组中特定的,具有编号的位置。
  • 数组的声明:(1)int[] xxx = new int[3];表示实例化数组xxx后,为其预留了存放三个整型值的内存空间,索引为0、1、2。(2)int[] xxx={1,2,3};表示用初始值表实例化一个数组对象,并为数组中的每个元素提供初始值。
  • 数组作为参数:整个数组可以作为一个参数传递给一个方法,这种方法可以实际改变该数组元素,一个数组元素也可以传递给方法。
  • 对象数组:数组可以将对象引用作为元素保存,每个数组元素所代表的对象必须分别实例化后才可直接使用,如

    person[] ps = new Person[2];
    ps[0] = new Person(name0,phone0);
    ps[1] = new Peeson(name1,phone1);
  • 命令行实参:String[]参数(通常称为args)代表了命令行参数,调用解释器时关于命令行的信息将存放在args数组中供程序使用。例如

    public class xxx{
    pubilc static void main(String[] args){
    System.out.print("args[0] = " + args[0]);
    }
    运行时,输入java xxx hello,输出的就是args[0] = hello;
  • 可变长度参数表:将java方法定义为参数个数个数可变的方法,每次调用这个方法时处理的数据量不同。例如

    public double average(int...list)
    average方法可接受任意个数(包括0)的int参数。多个参数的类型可以是基本类型或对象类型;接收可变参数的方法可以是基本类型或对象类型,可变参数需写在形参表最后,且一个方法只能有一组可变参数。
  • 二维数组:保存整型数的二维数组形式为int[][];每个维的大小可以不同,也可以使用初始值表实例化二维数组,需要用双重循环来输出二维数组的每一个元素

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

  • 问题一:看到书中这样一段话时不理解

将一个数组作为参数的方法可以实际改变该数组的元素,因为该方法引用的是原始数组的元素值。但该方法不能改变数组引用本身,因为它所接受的参数是原始数组引用的副本。

  • 问题一解决:在助教的帮助下,利用书中的例8.4进行了试验,才理解了。第一张图是将数组作为方法的参数,在引用方法时,修改索引值为0的元素,再次输出此数组时,索引值为零的元素改变了。同时,对这一个问题做出了扩展,第二张图调用了方法修改索引值为0的元素,修改了这个数组,成为了一个新数组,输出这个新数组,索引值为0的元素也改变了。

技术分享图片

技术分享图片

  • 问题二:再看到书上例8.3时,其中upper[current-‘A‘]++不理解,current是char型的值,upper是int型的值。
  • 问题二解决:char类型的值相加减实际上为对应的ASCCI码相加减,结果为int型的。这里current代表检测到的字符,它减去开头的‘A‘字符,则为他的序号,所以upper[current-‘A‘]++代表这个字符出现的次数。

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

  • 问题一:如图, 用list.length表示数组长度时,输出的均值为零。当添加语句System.out .println(list.length ) ;时,发现它的值不是5而是50,即为每次输入一个整数时与之前输入的积累2 + 2+3 + 2+3+4 + 2+3+4+5 + 2+3+4+5+6=50

技术分享图片

技术分享图片

技术分享图片

  • 问题一解决:把list.length修改为num1后,则正确,原因是在上面的程序中,每输入一个num,则执行num++,所以num就代表数组中的元素个数,而list数组中的元素值我已经定义为list[num1]=num,所以数组中的每个元素值是个积累得来的数值,并不是输入的数值。

技术分享图片

  • 问题二:输入数值后并没有按照我所要求的做出反应。

技术分享图片

技术分享图片

  • 问题二解决:后来仔细查看了代码,发现如果我输入的第一个数不为零,则进入else条件句中,并且在while语句中循环,此时再输入零自然没反应,直到输入够50个数后才能跳出循环。

代码托管

技术分享图片

上周考试错题总结

  • 错题一:The idea that program instructions execute in order (linearly) unless otherwise specified through a conditional statement is known as flow of control
  • 错题一解析:“控制流程”描述了指令执行的顺序。它默认为线性(或顺序),但通过使用控制语句(如条件和循环)进行更改。
  • 错题二:Which of the sets of statements below will add 1 to x if x is positive and subtract 1 from x if x is negative but leave x alone if x is 0?
    if (x > 0) x++;
    else if (x < 0) x--;
  • 错题二解析:我选择的答案是“if (x > 0) x++;
    if (x < 0) x--; else x = 0;”我选择的答案中,如果x是正数,执行x++,在任何情况下,都会执行第二条语句,如果x不是负数,那么执行else将x变为零,所以错误。
  • 错题三:If x is an int where x = 1, what will x be after the following loop terminates?
    while (x < 100)
    x *= 2; 128
  • 错题三解析:当X等于64时,再次判断,他还是小于100的,所以再次执行x *=2语句,变为128,之后不满足循环条件。
  • 错题四:Which of the following are true statements about check boxes?
    A . they may be checked or unchecked
    B . radio buttons are a special kind of check boxes
    C . they are Java components
    D . you can control whether or not they will be visible
  • 错题四解析:复选框可能会被check或不被check,单选按钮是一种特殊的复选框,他们是Java组件,你可以控制复选框是否可见。以上都是复选框的特点。
  • 错题五:In Java, selection statements consist of the if and if-else statements. false
  • 错题五解析:还有swich语句也是。
  • 错题六:In order to compare int, float and double variables, you can use <, >, ==, !=, <=, >=, but to compare char and String variables, you must use compareTo( ), equals( ) and equalsIgnoreCase( ).false
  • 错题六解析:可以使用<,>,==,!=,<=,> =直接比较char变量,但是对于任何字符串比较,必须使用compareTo(),equals()和equalsIgnoreCase()。
  • 错题七:A continue statementmay be used within any Java loop statement
  • 错题七解析:尽管应该避免使用continue语句,但是如果可能的话,它们可以在Java的三个循环中使用:for,while和do-while。
  • 错题八:The statement if (x < 0) y = x; else y = 0; can be rewritten using a conditional operat y = (x < 0) ? x : 0;
  • 错题八解析:这道题目是语句记错了,我选择的是“(x <0)?y = x:y = 0;”
  • 错题九:How many times will the following loop iterate?
    int x = 10;
    do {
    System.out.println(x);
    x--;
    } while (x > 0 ); 11 times
  • 错题九解析:输出多少个数就循环多少次,输出的数依次是:10、9、8、7、6、5、4、3、2、1、0。当x=1时还会循环一次,我错在这里,误认为这时就停止了。
  • 错题十:Given that s is a String, what does the following loop do?
    for (int j = s.length( ); j > 0; j--)
    System.out.print(s.charAt(j-1)); it prints s out backwards
  • 错题十解析:我现在还是觉得是从后往前打印
  • 错题十一:In Java, it is possible to create an infinite loop out of while and do loops, but not for-loops. false
  • 错题十一解析:循环可以是无限循环,但Java for循环也可以是无限循环。在许多其他编程语言中,这种情况并非如此,其中for循环具有设置的起点和终点,但Java for-loops比大多数其他语言的for-loops灵活得多。

结对及互评

点评模板:

  • 博客中值得学习的或问题:

  • 代码中值得学习的或问题:

  • 基于评分标准,我给本博客打分:XX分。得分情况如下:xxx

点评过的同学博客和代码

其他

在这周的学习中感觉自己的逻辑性不好,写的循环大多是有问题的,在编写pp之类的代码时,想的有点复杂,在最开始时误以为代码需要实现的很多功能后来发现不用那么复杂,所以开始走了很多弯路,感觉还是对循环语句掌握的不好,总会想着绕很大的弯去实现一些操作,但其实可以用一些巧妙的语句实现。但问题是我就是想不到啊罒ω罒

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积)
目标 5000行 30篇 400小时
第一周 93/93 1/1 20/20
第二周 305/398 1/2 20/38
第三周 328/651 2/4 25/60
第四周 1013/1689 1/5 30/90
第五周 795/2407 1/6 30/120
第六周 1117/2921 1/7 30/150

参考资料


















201723142017-2018-2《程序设计与数据结构》实验报告一(代码片段)

201723142017-2018-2《程序设计与数据结构》实验报告一课程:《程序设计与数据结构》班级:1723姓名:方艺雯学号:20172314实验教师:王志强实验日期:2018年3月25日必修/选修:必修1.实验内容下载安装JDK和IDEA。学会使用IEDA简单地... 查看详情

201723142017-2018-2《程序设计与数据结构》实验报告三(代码片段)

课程:《程序设计与数据结构》班级:1723姓名:方艺雯学号:20172314实验教师:王志强实验日期:2018年5月16日必修/选修:必修1、实验内容(1)代码规范http://www.cnblogs.com/rocedu/p/4795776.html,Eclipse的内容替换成IDEA。参考http://www.cnbl... 查看详情

程序设计与算法

程序设计与算法[北京大学] 第一周:枚举完美立方生理周期称硬币熄灯问题讲义加群:597225218  输入:博客园程序设计与算法第一章第二周:递归(一)阶乘汉诺塔N皇后波兰表达式讲义加群:597225218  输入:博客园程序... 查看详情

201723272018-2019-1《程序设计与数据结构》实验三:查找与排序

201723272018-2019-1《程序设计与数据结构》实验三:查找与排序课程:《Java软件结构与数据结构》班级:201723姓名:马瑞蕃学号:20172327实验教师:王志强实验日期:2018年11月19日必修/选修:必修一、实验内容:实验二查找与排序-1... 查看详情

20172328《程序设计与数据结构》实验三:查找与排序

20172328《程序设计与数据结构》实验三:查找与排序课程:《软件结构与数据结构》班级:1723姓名:李馨雨学号:20172328实验教师:王志强老师实验日期:2018年11月19日-2018年11月25日必修选修:必修一、实验要求内容实验1:定义... 查看详情

20172308实验三《程序设计与数据结构》查找与排序实验报告(代码片段)

201723082018-2019-1实验3《查找与排序》报告课程:《程序设计与数据结构》班级:1723姓名:周亚杰学号:20172308实验教师:王志强实验日期:2018年10月20日必修/选修:必修1.实验内容查找与排序-1:定义一个Searching和Sorting类,并在... 查看详情

《程序设计与数据结构》第八周学习总结

学号20172326《程序设计与数据结构》第八周学习总结教材学习内容总结后绑定在程序执行时执行多态性可由继承与接口实现排序有选择法排序与插入法排序搜索分为线性搜索与二分搜索算法,同一类型的不同方法可能解决同一问... 查看详情

程序设计基石与实践专栏引导

本博文主要对通过程序设计基石与实践专栏归类,主要分为C语言与C++语言.下面对程序设计基石与实践专栏博文的索引:(待定未完待续)C语言话谈C语言让你成为一名Top的C语言程序员C语言程序员必读的5本书让你成为... 查看详情

计算机专业毕业设计(论文)题目汇总表.doc

考试报名数据处理系统设计与实现、基于WEB的车票预订信息系统设计与实现、全文搜索引擎的设计与实现、图书借阅管理信息系统设计与实现、图书销售管理信息系统设计与实现、学生选课信息系统设计与实现、运动会成绩管理... 查看详情

红书《题目与解读》第一章数学题解《acm国际大学生程序设计竞赛题目与解读》(代码片段)

...计划红书《题目与解读》第一章数学题解《ACM国际大学生程序设计竞赛题目与解读》全书目录:《题目与解读》红书训练笔记目录《ACM国际大学生程序设计竞赛题目与解读》目录红书《题目与解读》第一章数学题解《ACM国际... 查看详情

风螺旋与飞行程序设计

精简版的课件分享。风螺旋课题的一个阶段性总结,后续将从理论向实践进行转变,希望取得更多的实践成果,再与大家分享!全文完,谢谢!  查看详情

RESTful URL 设计:公共与私有 API、分层 API 设计模式、URI 与 URL 设计?

】RESTfulURL设计:公共与私有API、分层API设计模式、URI与URL设计?【英文标题】:RESTfulURLdesign:publicvsprivateAPI,hierhachyAPIdesignpattern,URIvsURLdesign?【发布时间】:2013-12-1923:00:23【问题描述】:我经常遇到这样的问题,与HierarchicalRESTfulUR... 查看详情

程序设计语言与语言处理程序基础

重点1编译过程2文法定义 一颗语法树 有限自动机正规式7数据类型与程序控制结构8表达式9传值与传址传址调用10各程序语言特点  查看详情

201823222019-2020-1《数据结构与面向对象程序设计》第四周学习总结

教材学习内容总结1.编写类与方法(构造方法的结构和用途)2.实际参数与形式参数、public与private、return与void的区别与含义、3.UML类图的含义与形式4.静态类(Math类)静态变量、静态方法5.类间关系(依赖关系、聚合关系、继承... 查看详情

概要设计与具体设计

概要设计与具体设计在写概要设计与具体设计的时候,对于内容以及他们之间的界限非常easy模糊.今天写点自己的想法.有问题请大家不吝赐教:[email protected]首先大家要注意这2个文档最后2字,都是设计.设计就是设计,不是代码因... 查看详情

数学题解《acm国际大学生程序设计竞赛题目与解读》(代码片段)

...计划红书《题目与解读》第一章数学题解《ACM国际大学生程序设计竞赛题目与解读》全书目录:《题目与解读》红书训练笔记目录《ACM国际大学生程序设计竞赛题目与解读》目录红书《题目与解读》第一章数学题解《ACM国际... 查看详情

201723292017-2018-2《程序设计与数据结构》第十周学习总结

201723292017-2018-2《程序设计与数据结构》第十周学习总结教材学习内容总结第十三章一、集合与数据结构1、集合:是一种对象,类似于保存其他对象的存储库;2、作用:表示一个专用与保存元素的对象,并且该对象还提供增添、... 查看详情

系统分析与设计复习

文章目录系统分析与设计复习第1章系统分析与设计概述系统特性DevOps第2章系统规划**系统规划步骤**规划模型诺兰模型**CMM模型**系统规划方法战略集合转换法SST关键成功因素法CSF企业资源规划法BSPCSB三者联系和区别第3章系统分... 查看详情