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

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

点评过的同学博客和代码

  • 本周结对学习情况

    • 结对同学学号1
    • 结对照片
    • 结对学习内容
      • XXXX
      • XXXX
      • ...
  • 上周博客互评情况
    • 学号1
    • 学号2
    • 学号3
    • 学号4
    • ...

其他

在这周的学习中感觉自己的逻辑性不好,写的循环大多是有问题的,在编写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

参考资料

原文地址:https://www.cnblogs.com/YiYiYi/p/8849146.html

时间: 2024-08-30 10:09:25

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

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

20172314 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 本书第一章为计算机系统概述,前面是一些计算机相关的基础知识,让我对计算机有了一个总体的认识,不再是一片空白了,对主存储器和CPU影响深刻,主存储器用于保存程序和数据,CPU执行程序指令.在接下来的Java编程语言与程序开发部分,开始看的时候有点迷茫,不是很理解,后来先按照作业中附带的流程完成一些代码托管之后,接触了完整的简单的程序之后,再回过头来看书,看到的一些陌生的名词在脑海中就有了实际的对应,

20172323 2018-2019-1 《程序设计与数据结构》第一周学习总结

20172323 2018-2019-1 <程序设计与数据结构>第一周学习总结 教材学习内容总结 第一章--概述 1.1 软件质量 软件工程(Software Engineering)是一门关于高质量软件开发的技术和理论的学科. 解决的问题:控制开发过程,实现高质量的软件 软件工程的目标 高质量软件的特征 1.2 数据结构 数据结构:计算机存储.组织数据的形式. 程序 = 数据结构 + 算法 软件 = 程序 + 软件工程 栈会颠倒数据的顺序,而队列可以保持数据的顺序. 第二章--算法分析 算法

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

20172305 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 本书的第一章简单的介绍了计算机和JAVA的历史,基础内容很多,代码的讲解还没用正式进入,本周一直在做敲代码的准备,简单敲了老师给的"Hello World!"以及书后的PP1.3.PP1.4等简单的小程序. 教材学习中的问题和解决过程 问题1:三种不同类型的错误,运行错误和逻辑错误的混淆 问题1解决方案:针对EX1.20的"希望做加法时却做里乘法"进行了网上

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

20172317 2017-2018-2 <程序设计与数据结构>第一周学习总结 教材学习内容总结 重新温习了一遍计算机的基础 总算了解了局域网广域网因特网万维网这些东西之间的区别了 通过URL的例子知道了网址各个部分的含义 对Java编程语言和程序开发有了一个粗浅的了解 教材学习中的问题和解决过程 问题:练习题SR1.13出现了答案与题目不相符的情况 问题解决方案:题中有个选项是"网卡",答案中没有,反而有个题目没有的选项"调制解调器"(俗称"

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

20172322 2017-2018-2 <程序设计与数据结构>第二周学习总结 教材学习内容总结 了解了print与println的区别 了解了字符串的拼接可以用+来完成 了解了转义字符的使用 学会了使用赋值 学会使用部分算术运算符 学会了使用Scanner来实现交互性 教材学习中的问题和解决过程 问题1:在最初接触赋值时对foalt和double的赋值范围不了解 问题1解决方案:使用万能的度娘后看到一个高赞答案后有了了解 问题2:在提前预习时看到2.7图形后敲入的代码无法执行 问题2解决方案

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

20172328李馨雨<程序设计与数据结构>第二周学习总结 又到周五,李馨雨同学要开始写博客了.让我们开始吧!(????) 教材学习内容总结 1.首先是String类定义的字符串,然后是print和println的区别.转义字符的学习.(让我印象深刻的\b[回车符]在字符串结尾不显示哈哈,及其更新的\t[换行符],还有在课堂上真正明白了什么是回车.) 2.了解变量.常量.赋值语句.变量:保存数据的内存单元.常量:坚定自己不会变的数据!除非你用java的反射(有点复杂,改权限.去修饰符等等.没实

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

20172327 2017-2018-2 <程序设计与数据结构>第二周学习总结 教材学习内容总结 字符串的拼接和转义序列的使用 变量的声明和使用 讨论语法及表达式的处理 定义数据转换类型和实现类型转换的机制 创建Scanner类 教材学习中的问题和解决问题 暂无 代码学习中的问题和解决过程 问题1:在提交过程中,突然遇到无法上传的情况 问题2解决方案:通过上网查找,输入git pull之后弹出一个编辑框,选择关闭之后,再次用git push就成功了. 问题2:在按照例题2.10打代码时,Jav

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

学号20172328<程序设计与数据结构>第九周学习总结 教材学习内容总结(异常和递归) 第11章:异常 1.[异常处理]: 一个异常:是一个定义非正式情况或错误的对象,由程序或者运行时环境抛出,可以根据需要捕获和处理. 错误:错误类似于异常,但是错误代表不可恢复的问题并且必须捕获处理. 2.[处理异常的三种方法]:①根本不处理异常②当异常发生时处理异常③在程序的某个位置集中处理异常. 3.[未捕获的异常]:如果程序中不处理异常,则程序将非正常的终止运行,并产生关于描述在何处发生什么异常的信息

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

学号 20172326 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常(exception):定义非正常情况下或错误的情况的对象,由程序或运行时环境抛出,可根据需要进行相应的捕获处理. 异常与错误的区别:错误代表不可恢复的问题并且必须捕获处理.而异常可以忽视,或者使用try语句处理,或调用更高级的方法. 可检测异常与不可检测异常:可检测异常必须由方法捕获,或者必须在可能抛出或传递异常方法的throws子句中列出来.在方法定义的声明头中追加一条throws子句.不可检测异常不需要使

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

20172322 2017-2018-2 <程序设计与数据结构>第九周学习总结 教材学习内容总结 异常 学会了使用try-catch来实现未捕获的异常的处理.可以使得异常被捕获进而不导致程序出现错误退出.使用try写入可能产生异常的语句,使用catch来编写在捕获异常后继续执行的代码(可以为空). "未捕获的异常"指在编译过程中不会被编译软件显示异常但是在运行时会出现异常导致程序直接退出,例如:"ArithmeticException"."In