学号 20172326 《程序设计与数据结构》第六周学习总结
教材学习内容总结
- 索引值由0开始,不注意时可能出现差一错误
- double,int,float初始化数组后默认数组中每个对应索引值的
默认值为0,老师上课提到,不为零,为一组随机数。char与String对应为空。 - 可以将数组中的数据作为变量输出。
教材学习中的问题和解决过程
- 问题:例题8.3中获取索引的问题
- 问题1解决方案:
大致的模式可以理解,但是,程序是如何识别“a”是a呢?
本段程序如下
for (int ch = 0;ch<line.length();ch++)
{
current = line.charAt(ch);
if (current >= 'A'&& current <= 'Z')
upper[current-'A']++;
else
if (current >= 'a' && current <= 'z')
lower[current-'a']++;
else
other++;
}
- 在不断理解上下文后发现,首先在char中,对应的不是理解中的字母,而是Unicode码,例如A是65,所以是减去A对应着减去其uincode码。从中可以锁定句中的字母的索引。而又已知的是数组默认值为0,所以,如果有相应字母,那么通过upper[]++来增加对应索引的内容。
对应的,在输出时,有
// Print the results
System.out.println();
for (int letter=0; letter < upper.length;letter++)
{
System.out.print((char)(letter + 'A'));
System.out.print(": " + upper[letter]);
System.out.print(" " + (char)(letter + 'a'));
System.out.print(":" + lower[letter]);
}
- 继续利用Unicode码,从A开始,A为65,则对应的letter从0开始。可以轻易的将数字转化为字符。
代码调试中的问题和解决过程
-
问题:PP8.1的编写 ,有以下问题:
-
1是超出范围时退出的问题。当时想到了break语句,但是出现了许多问题。
-
2是在寻找索引的问题,因为输入一个数字时无法确定其位置
-
3是在开始时应当怎样输入,是用string还是char还是int型。
-
问题解决方案:
-
1其实不用选择,因为执行for与while语句时,如若没有满足条件,则自动退出循环。
-
2在向学长请教后,加深了理解,申明一个数组后,只需要对号入座,例如输入5.那么,在num[]中,a=5,则有num[5]=0,再接着使用num[]a++,使得num[a]=1,即记录一次。
-
3 用int型,结合循环后 即可
-
其他
-
输出时,怎样使其输出有规律,学长有精心的为我指出如下代码
for (int i=0;i<num.length;i++)
{
System.out.print(i+":"+num[i] +" ");
if(i%5==0&&i!=0)
System.out.println();
}
- 这里也蕴含着一定技巧当这行输出了五行时,自动换行。
代码托管
上周考试错题总结
- 错题1
The idea that program instructions execute in order (linearly) unless otherwise specified through a conditional statement is known as-flow of control
- 原因,理解情况:
- 在默认情况下,程序逐条执行命令,但是遇到判断、循环语句时,根据逻辑顺序进行执行
- 错题2
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;
- 错选了c,如果时c,那么在执行第二条if语句时,会有正数为0的情况。
- 错题3
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时继续循环,结果为128,不符合循环,但此时x已经为128
- 错题4
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
-
原因,理解情况:
-
第八题属于星号内容,查书可得
-
错题5
The statement if (x < 0) y = x; else y = 0; can be rewritten using a conditional operator as-- y = (x < 0) ? x : 0;
- 原因,理解情况:
- (x < 0) ? y = x : y = 0
- 错选为顺序错误,第一处为赋值语句,?为判断,“:”为选择
- 错题6
Given the following code, where x = 0, what is the resulting value of x after the for-loop terminates?
for (int i=0;i<5;i++)
x += i;--10
- 原因,理解情况:
- i = 0,x = x + 0 = 0; i= 1 x = x + 1 = 1;
- i = 2 x = x + 2 = 3; i = 3 x = x + 3 = 6;
- i = 4 x = x + 4 = 10;
- 错题7
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
- 原因,理解情况:
- charAt()括号中为索引值,所以,注意其数字
- 错题8
Each case in a switch statement must terminate with a break statement--false
- 原因,理解情况:
- 最后一个case语句就可以不用
- 错题9
In Java, it is possible to create an infinite loop out of while and do loops, but not for-loops.
- 原因,理解情况:
- 任何语句都可以产生无限循环
单词总结
- iterate 迭代(循环) positive正
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 110/200 | 1/1 | 20/20 | |
第二周 | 425/500 | 2/2 | 18/38 | |
第三周 | 900/1000 | 4/4 | 22/60 | |
第四周 | 1500/1300 | 5/5 | 30/90 | |
第五周 | 2715/3000 | 6/6 | 20/110 | |
第六周 | 3097/3500 | 7/7 | 20/130 |
感想
本周用三天时间学第八章感觉有些紧张,很多问题理解得不够到位,但在解决后很开心。
点评过的同学博客和代码
-
20172313
-
博客中值得学习的或问题:
-
排版用了css。
-
图片截图可以结果和代码分开,会看着更舒服
-
教材内容总结的很有意思,很用心。
-
详略得当,问题发现的一针见血,很有针对性,可以看出写代码时,前后的流程十分规范。
-
博客样式精美,给人以赏心悦目的体验。
-
能够使自己和读者都能起到提升的作用。
-
代码中值得学习的或问题:
-
在往博客中打代码时,可以用``这个方式,会使代码变成规范的代码形式。