第二章:基本程序设计
复习题
2.1 指出并修改以下代码中的错误:
public class Test {
public void main(String[] args) {
double i = 50.0;
double k = i + 50.0;
double j = k + l;
System.out.println("j is " + j + " and k is " + k);
}
}
解:
主方法缺少关键字static;l改为i
正确格式如下:
public class Test {
public static void main(String[] args) {
double i = 50.0;
double k = i + 50.0;
double j = k + i;
System.out.println("j is " + j + " and k is " + k);
}
}
2.2 如何编写一条语句,让用户从键盘输入一个双精度值?在执行下面代码的时候,如果你输入5a,将发生什么?
double radius = input.nextDouble();
解:
输入5a的时候,会报错 InputMismatchException
代码如下:
public class Test2_2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入双精度值:");
double radius = input.nextDouble();
System.out.println(radius);
}
}
2.3 下面两个import语句之间有什么执行的不同吗?
import java.util.Scanner;
import java.util.*;
解:
第一行只会导入until下的Scanner类,第二行会导入Util下的所有的类。
2.4 以下标识符哪些是合法的?哪些是Java的关键字?
miles,Test,a++,–a,4#R,KaTeX parse error: Expected 'EOF', got '#' at position 3: 4,#̲44,apps class,p…组成,其中只有由字母、下划线、$作为开头,且不能由关键字作为标识符;
所以不合法的标识符及其原因是:a++(有+),–a(有 -)、4#R(有#且以数字为开头)、#44(有 #);
合法的有:miles、Test、$4、apps
关键字有:class、public、int
2.5 指出并修改下面代码中的错误:
public class Test {
public static void main(String[] args) {
int i = k + 2;
System.out.println(i);
}
}
解:
变量k没有被赋值。
2.6 请指出并修改下面代码中的错误:
public class Test {
public static void main(String[] args) {
int i = j = k = 2;
System.out.println(i + " " + j + " " + k);
}
}
解:
j 和 k 没有声明变量。
其中一种正确修改如下
public class Test {
public static void main(String[] args) {
int i, j, k;
i = j = k = 2;
System.out.println(i + " " + j + " " + k);
}
}
2.7 使用常量的好处是什么?声明一个int类型的常量SIZE,并且值为20。
解:
使用常量有三个好处:
- 不必重复输入同一个值;
- 如果必须修改常量值(例如,将PI的值从 3.14 改为 3.14159),只需在源代码中的一个地方做改动;
- 给常量赋一个描述性名字会提高程序易读性。
final int SIZE = 20;
2.8 类名、方法名、常量和变量的命名习惯是什么?按照Java的命名习惯,以下哪些项可以作为常量、方法、变量或者一个类?
解:
- 变量和方法名:使用小写字母命名。如果一个名字包含多个单词,就将它们连在一起,第一个单词的字母为小写,而后面的每个单词的首字母为大写。例如变量 radius 和 area 以及方法 print()。
- 类名:每个单词的首字母大写,例如,类名 ComputeArea 和 System。
- 常量:所有字母大写,并且两个单词间用下划线_连接,例如,常量 PI 和常量 MAX_VALUE。
2.9 将以下算法翻译成 Java 代码。
第一步:声明一个双精度型变量 miles,初始值为 100。
第二步:声明一个双精度型常量 KILOMETERS_PRE_MILE,初始值为 1.609。
第三步:声明一个双精度变量 kilometers,将 miles 和 KILOMETERS_PRE_MILE 相乘,并且将结果赋值给 kilometers。
第四步:在控制台显示 kilometers。
第四步之后,kilometers 是多少?
解:
代码如下
public class Test2_9 {
public static void main(String[] args) {
double miles = 100;
final double KILOMETERS_PRE_MILE = 1.609;
double kilometers = miles * KILOMETERS_PRE_MILE;
System.out.println(kilometers);
}
}
2.10 找到最大和最小的 byte、short、int、long、float 以及 double。这些数据类型中,哪个需要的内存最小?
解:
从大到小依次为:double > float > long > int > short > byte
各自所占字节大小为:8 字节、4字节、8字节、4字节、2字节、1字节
即 byte 需要的内存最小。
2.11 给出以下求余计算的结果。
56 % 6
78 % -4
-34 % 5
-34 % -5
5 % 1
1 % 5
解:
代码如下
public class Test2_11 {
public static void main(String[] args) {
System.out.println(56 % 6);
System.out.println(78 % -4);
System.out.println(-34 % 5);
System.out.println(-34 % -5);
System.out.println(5 % 1);
System.out.println(1 % 5);
}
}
结果如下
2,2,-4,-4,0,1
2.12 假设今天是周二,100天后将是周几?
解:
代码如下
public class Test2_12 {
public static void main(String[] args) {
System.out.println("是周" + (2 + 100) % 7);
}
}
是周 4
2.13、25 / 4 的结果是多少?如果你希望得到浮点数结果,如何重写表达式?
解:
25 / 4 的结果是 6;想要得到浮点数结果的话,表达式应改为 25.0 / 4
2.14 给出以下代码的结果:
System.out.println(2 * (5 / 2 + 5 / 2));
System.out.println(2 * 5 / 2 + 2 * 5 / 2);
System.out.println(2 * (5 / 2));
System.out.println(2 * 5 / 2);
解:
结果如下
8,10,4,5
2.15 下面的语句正确吗?如果正确的话,给出输出。
System.out.println("25 / 4 is " + 25 /4);
System.out.println("25 / 4.0 is " + 25 / 4.0);
System.out.println("3 * 2 / 4 is " + 3 * 2 / 4);
System.out.println("3.0 * 2 / 4 is " + 3.0 * 2 / 4);
解:
这些语句都是正确的。输出如下
25 / 4 is 6
25 / 4.0 is 6.25
3 * 2 / 4 is 1
3.0 * 2 / 4 is 1.5
2.16 写一个显示 2 ^ 3.5 的计算结果的语句。
解:
Math.pow(2, 3.5);
2.17 假设 m 和 r 是整数。编写一个 Java 表达式,使得 mr^2 可以得到一个浮点数类型的结果。
解:
double result = m * r * r;
2.18 在 float 和 double 类型的变量中保存了多少个精确位?
解:
float保存了 7 到 8 位;double 保存了 15 到 17 位。
2.19 以下哪些是正确的浮点数类型直接量?
12.3、12.3e+2、23.4e-2、-334.4、20.5、39F、40D
解:
12.3(是)、12.3e+2(是)、23.4e-2(是)、-334.4(是)、20.5(是)、39F(不是)、40D(不是)
2.20 以下哪些和 52.534 是等价的?
5.2534e+1、0.52534e+2、525.34e-1、5.2534e+0
解:
前三个是等价的,最后一个不等价。
2.21 以下哪些是正确的直接量?
5_2534e+1、2534、5_2、5
解:
前三个正确,最后一个错误。
2.22 如何在 Java 中表达以下算数表达式?
a.
b.
解:
表达式如下
a、
4 / 3 * (r + 34) - 9 * (a + b * c) + (3 + d * (2 + a)) / (a + b * d);
b、
5.5 *