20182306 2019-2020-1 《数据结构与面向对象程序设计》第二、三周学习总结
教材学习内容总结
- Scanner类输入先输入创立对象例如Scanner scan = new Scanner(System.in).再凭借此进行输入。如a=scan.nextInt(),注意后面的类型首字母大写。
- Math是静态方法
- java.text包有NumberFormat和DecimmalFormat
- message=scan.nextLine;将下一行输入的一行文本作为字符串变量保存。
- 整形除以浮点型,整形自动转化为浮点型,再进行运算。
- import java.util.Scanner;在类定义之前,告诉系统要使用Scanner类。
- Random类:属于java.util包
- 包与类库:package和API(Application Programming Intefaces)
教材学习中的问题和解决过程
- 问题1:什么是类方法或静态方法?
- 问题1解决方案:一个类的方法即静态方法可以通过定义该方法的类名调用,如Math.abs。如果方法不是静态的,则只能通过一个实例调用。
- 问题2:NumberFormat对象的使用不能用new来创建,也不可以直接调用其方法。
- 问题2解决方案:NumberFormat不能用new运算符来实例化一个对象,而且一次只能用里面一个方法来创建一个对象。根据教材中给出的例子程序,我们一次只能创建一个用于返回格式化值的对象getCurrencyInstance和getPercentInstance,接着将数字以字符串的形势用format()方法返还回去。即先设定对象的模式,再调用方法。
代码调试中的问题和解决过程
- 问题1:我发现我的码云在班级中没有仓库
- 问题1解决方案:将我之前的仓库删掉,然后将Linux的之前绑定的仓库解绑,然后用
git clone
绑定新的仓库。将之前的代码上传。 - 问题2: Java中也存在吃回车问题
- 问题2解决方案:输入
op=scan.nextLine();
将缓冲的回车吃掉。 - 问题3:在
public class
后面的文件格式有问题 - 问题3解决方案:后面的文件名不能带
.
代码托管
(statistics.sh脚本的运行结果截图)
上周考试错题总结
-
A cast is required in which of the following situations? (下列哪种情况需要强制转换?)
A .using charAt to take an element of a String and store it in a char (使用charAt来获取字符串元素并将其存储为char类型)
B .storing an int in a float (将一个int类型的数存储为float类型)
C .storing a float in a double (将一个float类型的数存储为double类型)
D .storing a float in an int (将一个float类型的数存储为int类型)
E .all of the above require casts (以上所有情况都需要强制转换)
正确答案: D 你的答案: B
解析:对于A,Charat返回一个char,所以没有问题。在B和C中,这种情况正在扩大采用较窄类型的操作,并将值存储在更宽的类型中。只有在D的情况下,一个更宽的类型被存储在一个更窄的类型中,所以需要一个转换。 -
What is output with the statement System.out.println(""+x+y); if x and y are int values where x=10 and y=5? (如果x和y是int类型的数值,x=10,y=5,那么语句System.out.println(""+x+y);的输出是什么?)
A .15
B .105
C .10 5
D .x+y
E .An error since neither x nor y is a String (因x和y都不是字符串而引起的一个错误)
正确答案: B 你的答案: A
解析:“导致表达式的其余部分被视为字符串,因此两个+符号被用作字符串连接。因此,x+y与y或105连接在一起。 -
You cannot cast a String to be a char and you cannot cast a String which stores a number to be an int, float or double. (你不能将字符串强制转换为char类型,也不能将一个字符串强制转换为int、float或double类型。)
A .true
B .false
正确答案: A 你的答案: B
没有将字符串强制转换为基本类型之一的机制,但有一些方法可用于执行类似的操作,并在给定位置(Charat)返回字符或返回与字符串中存储的数字相等的int值、Float值或双值。 -
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?
A .if (x > 0) x++;else x--;
B .if (x > 0) x++;else if (x < 0) x--; C .if (x > 0) x++;if (x < 0) x--;else x = 0;
D .if (x == 0) x = 0;else x++;x--;
E .x++;x--;
正确答案: B 你的答案: C
解析:如果x是正的,如果x是负x,则执行x+,否则什么都不会发生,或者x不受影响。在A,C,D和E中,逻辑是不正确的。在A中,x-,如果x不是正的,那么如果x是0,x变成-1,这是错误的答案。在C中,如果x为正,则执行x+。在这两种情况下,都会执行下一条语句,如果x不是负的,则执行etc子句,将x设置为0。因此,如果x是正的,在这组代码之后,它变成0。在D中,x+和x-都是在x不是0的情况下执行的。在E中,这段代码并不试图确定x是正还是负,它只是添加一个,然后从x中减去1,使x保持不变。 -
If x is an int where x = 1, what will x be after the following loop terminates?
while (x < 100)x= 2;
A .2
B .64
C .100
D .128
E .none of the above, this is an infinite loop
正确答案: D 你的答案: B
解析:对于x=1,循环条件为true,语句执行,加倍x,现在为2。由于循环条件仍然为真,语句再次执行,将x加倍为4。在接下来的4次迭代中,该条件仍然为真,其中x变为8、16、32和64。由于(x<100)在x=64时仍然为真,所以循环再次迭代,x变为264=128。现在,(x<100)不再为真,循环以x=128结束。 -
In Java, selection statements consist of the if and if-else statements.
A .true
B .false
正确答案: B 你的答案: A
解析:此列表省略开关语句。 -
When comparing any primitive type of variable, == should always be used to test to see if two values are equal.
A .true
B .false
正确答案: B 你的答案: A
解析:这对于int、Short、字节、Long、char和boole是正确的,但对于Double或Float变量则不是这样。如果两个双变量x和y正在测试,则(x=y)只有在它们完全等于最后一个小数点的情况下才是真的。相反,比较这两个值是很常见的,但考虑到价值上的微小差异。例如,如果Theta=0.000001,我们可以用(x-y<=Theta)而不是(x=y)来测试x和y,以便更好地了解它们是否足够接近,是否被认为相等。 -
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( ).
A .true
B .false
正确答案: B 你的答案: A
解析:还可以使用<,>,=,!=,>=,>=直接比较char变量,但是对于任何字符串比较,您必须使用compareto()、equalsIgnoreCase()和equalsIgnoreCase()。 -
In Java a variable may contain
A .a value or a reference
B .a package
C .a method
D .a class
E .any of the above
正确答案: A 你的答案: E
解析:Java变量包含值或对类实例的引用(这些实例包含值和/或其他引用)。 -
In Java, "instantiation" means
A .noticing the first time something is used
B .creating a new object of the class
C .creating a new alias to an existing object
D .launching a method
E .none of the above
正确答案: B 你的答案: C
解析:“实例化”意味着创建对象的新实例。这通常是通过使用新的运算符来实现的。对于String,只需在表达式中使用引号即可创建新实例(实例化)。例如:String s;s=“a newstring(实例)”; -
Consider the following two lines of code. What can you say about s1 and s2?String s1 = "testing" + "123";String s2 = new String("testing 123");
A .s1 and s2 are both references to the same String object
B .the line declaring s2 is legal Java; the line declaring s1 will produce a syntax error
C .s1 and s2 are both references to different String objects
D .s1 and s2 will compare "equal"
E .none of the above
正确答案: C 你的答案: B
解析:这两个声明都是合法的Java。S1是一个字符串引用,它被初始化为字符串“test 123”。S2是一个字符串引用,它被初始化为字符串“test 123”。注意“测试”和“123”之间的空格。所以这两个字符串是不相等的。 -
An "alias" is when
A .two different reference variables refer to the same physical object
B .two different numeric variables refer to the same physical object
C .two different numeric variables contain identical values
D .two variables have the same names
E .none of the above
正确答案: A 你的答案: B
解析:当有两个或多个对同一个物理对象的引用时,会出现一个“别名”,因此通过跟随引用,可以读取/写入/修改对象。 -
Consider the following enumeration
enum Speed { FAST, MEDIUM, SLOW };
A .The ordinal value of MEDIUM is 2
B .The ordinal value of SLOW is 1
C .The name of the Speed enumeration whose ordinal value is zero is FAST
D .The name of the Speed enumeration whose ordinal value is one is SLOW
E .None of the above
正确答案: C 你的答案: E
结对及互评
评分标准
-
正确使用Markdown语法(加1分):
-
模板中的要素齐全(加1分)
-
教材学习中的问题和解决过程, 3个问题加3分
-
代码调试中的问题和解决过程, 3个问题加3分
-
本周有效代码超过300分行的(加2分)
-
周五前发博客的加1分
感想,体会不假大空的加1分
排版精美的加一分
进度条中记录学习时间与改进情况的加1分
有动手写新代码的加1分
课后选择题有验证的加1分
错题学习深入的加1分
点评认真,能指出博客和代码中的问题的加1分
结对学习情况真实可信的加1分
点评模板:
-
博客中值得学习的或问题:
- 博客的排版比上次好多了
- 博客的内容很充实,问题和解决方案写的很详细
-
代码中值得学习的或问题:
- 代码目录很整齐,方便查找
- 代码的数量有大幅的增长
-
基于评分标准,我给本博客打分:15分。得分情况如下:
点评过的同学博客和代码
其他(感悟、思考等,可选)
Java作业越来越多,所以不能养成拖得习惯,尽量提前预习,
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 168/168 | 2/2 | 22/22 | |
第二周 | 300/500 | 1/3 | 16/38 | |
第三周 | 855/1000 | 2/5 | 22/60 |