Java 编程求帮助为猜字母游戏添加游戏钢筋强度等级符号字母。游戏钢筋强度等级符号字母设为三等:5、7和9,

当前位置: >>
1 下面关于 Linux 说法正确的是?A.Linux 是计算机操作系统。 B.Linux 系统下可以开发 Java 应用程序。 C.Linux 系统和 Windows 系统使用的 JVM 相同。 D.Linux 系统是开放源代码的。参考答案本题中 ABD 正确。 C 选项不正确。JVM 就是一个软件。它是用软件“虚拟”出的一个硬件机器。和真实 的硬件机器一样,这个“虚拟机”定义有指令集、寄存器、存储区等细节;而 Java 字节码 可以看成是在这个“虚拟机”上运行的机器码。正是由于 Sun 定义了 JVM 规范,而且不 同的操作系统提供了不同的 JVM 实现, 才使得相同的一个字节码文件可以在不同的系统上 运行(当然这些系统必须安装有适用于该系统的 JVM),从而使 Java 赢得了“一次编译, 到处使用”的称谓。JVM 是用本地 C 实现的,所以,Linux 系统和 Windows 系统使用的 JVM 不同。2 下面关于 Linux 目录结构说法正确的是?A. Linux 文件系统以树形目录的形式体现的,只有一个根目录。 B. Linux 文件系统有两个根目录。 C. Linux 文件系统和 Window 系统一样都有盘符,例如:c:/。 D. Linux 下 U 盘的挂载点是盘符,而不是目录。 参考答案本题选择 A。 Linux 文件系统结构如图-1 所示。图- 1从图-1 中可以看出,Linux 文件系统以树形目录的形式体现的。Linux 文件系统只有 一个根目录。Linux 下 U 盘的挂载点是目录。3 用户在终端输入下列命令,最终显示的结果是?1. [soft01@java3g ~]$ pwd 2. /home/soft01 3. [soft01@java3g ~]$ cd .. 4. [soft01@java3g home]$ pwd A./home/soft01 B./soft01 C./home D./home/soft01/java3g 参考答案用户在终端输入上述命令后,最终显示的结果是/home。 在 linux 系统下,pwd 命令用于显示当前工作目录,从给出的代码中可以看出当前的 工作目录为“/home/soft01“。命令”cd ..“ 表示返回到当前目录的上一级目录,由于 当前目录为”/home/soft01“,其上一级目录为”/home“。当再次使用 pwd 显示当前 工作目录时,即为”/home“。4 当前工作目录在/opt/jdk 目录下,需要转到/opt/eclipse 目录,下 列命令正确的是?A. cd /opt/eclipse B. cd ../eclipse C. cd ../jdk D. cd opt/eclipse参考答案本题的正确答案为 AB。 本题考查相对路径和绝对路径的问题。 以 linux 系统为例, 以根 (通常习惯称为 root) &/& 为开始的路径是绝对路径, 不是以&/& 开始的是相对路径, 相对路径默认相对于当前目 录。 本题中,选项 A 的路径是以“/”开始的,是绝对路径,可以从根路径开始向下查找 它的子路径,因此选项 A 正确。 选项 B、C、D 的路径没有以“/”开始,是相对路径,其中,B 选项,cd ../eclipse 表示首先查找当前目录的上一级目录, 即/opt; 然后, 再查找 opt 的下一级目录 eclipse, 因此 B 选项正确。 C 选项改变的路径为/opt/jdk, D 选项改变路径为/opt/jdk/opt/eclipse。5 简述 Java 编译及运行过程参考答案Java 编译及运行的过程如图-2 所示。图- 2从图-2 中可以看出,首先,编译,Java 源文件(*.java)经过 Java 的编译器编译成 Java 字节码文件(*.class);然后,运行,先进行类加载和字节码校验,之后,Java 字节 码经过 JVM 解释为具体平台的具体指令,并执行。6 名词解释 JVM、JRE、JDK参考答案JVM (Java Virtual Machine)称之为 Java 虚拟机,JVM 是一种用于计算设备的规 范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实 现的。JVM 屏蔽了与具体操作系统平台相关的信息,使 Java 程序只需生成在 Java 虚拟机 上运行的目标代码 (字节码) ,就可以在多种平台上不加修改地运行。 JVM 在执行字节码时, 实际上最终还是把字节码解释成具体平台上的机器指令执行。 JRE (Java SE Runtime Environment) 称之为 Java SE 运行时环境, 提供了运行 Java 应用程序所必须的软件环境,包含有 Java 虚拟机(JVM)和丰富的类库(Libraries)。运 行一个已经开发好的 Java 应用必须安装 JRE。 JDK( Java Development Kit)称为 Java 开发工具包,是 JRE 的超集,或者说 JDK 包含了 JRE。 JDK 中除了包含有 JRE 的所有内容之外还提供了编写 Java 程序所必须的编译 器和调试工具等。 对于进行 Java 开发的人士一般需要下载 JDK, 目前的主流版本为 JDK 6。7 根据 Cookbook 文档实现控制台版的 JAVA HelloWorld参考答案请根据 Cookbook 文档实现控制台版的 JAVA HelloWorld。8 下列关于 Eclipse 说法正确的是?A.在源文件编写的同时 Eclipse 会自动的调用 Java 编译器编译该文件,如果出现任 何编译错误,Eclipse 会立刻发现,并提示给用户。 B.Eclipse 中的 Workspace 是用于存储工程的路径。 C.在 Linux 系统下,可以使用./eclipse 启动执行程序 eclipse。 D.Eclipse 是开放源代码的 Java 开发平台。参考答案本题中 ABCD 选项都是正确的。 A 选项,Eclipse 具备所谓“即时编译”功能,即在源文件编写的同时 Eclipse 会自动 的调用 Java 编译器编译该文件,如果出现任何编译错误,Eclipse 会立刻发现,并提示给 用户。 B 选项,“工作区”(Workspace)。所谓“工作区”是指 Eclipse 用于存储工程的 路径。Eclipse 通过“工程”(Project)来组织资料。程序员编写的源文件、编译生成类 文件等以特定的目录结构存储在工程文件夹中。 C 选项,在 Linux 系统下可以使用./eclipse 启动执行程序 eclipse。 D 选项,Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。9 根据 Cookbook 文档实现 JAVA HelloWorld(Eclipse)参考答案请根据 Cookbook 文档实现 JAVA HelloWorld(Eclipse)。1 指出下面程序中的编译错误,并更正1. int lenght=10; 2. System.out.println(length);参考答案上述代码中,第二行会出现编译错误。length 变量没有声明,就被使用了,因此,会 出现编译错误。 咋一看代码会感觉 length 变量被初始化了, 但仔细查看会发现第一句声明 的变量为 lenght,th 两个字母写反了,导致了 length 变量没有被声明。因此,有时出现 的变量没有被声明的问题,引起的原因可能是变量名拼写错误。更正后的代码如下所示:1. int length=10; 2. System.out.println(length);2 指出下面程序中的编译错误,并更正1. int &size=20; 2. System.out.println(&size);参考答案上述代码中,定义的变量&size 不符合 Java 变量的命名规范,Java 变量只能包含数 字、字母、下划线和$,而&不能在变量命名中使用,因此会出现编译错误。更正后的代码 如下所示:1. int size=20; 2. System.out.println(size);3 指出下面程序中的编译错误,并更正1. 2. System.out.println(age);参考答案上述代码会出现编译错误,因为,变量 age 未进行初始化,就在第二行中被使用了。 在 Java 中,变量在使用之前,必须进行初始化。更正的代码如下所示:1. int age=2; 2. System.out.println(age); 4 运行下面程序,指出变量的输出结果1. int count=30; 2. count=60; 3. System.out.println(count);参考答案输出结果为 60。 上述代码中,首先声明并初始化 int 类型变量 count 为 30;然后,将变量 count 的 值改变为 60;最后,输出 count 的值。输出的 count 值为改变以后的值,即为 60。5 指出下面程序中的编译错误,并更正1. 2. balance =218.50;参考答案上述代码中,变量 balance 声明时的类型为 int,后续赋值为 218.50,而 218.50 是 浮点类型,因此导致编译错误。整数类型变量不可以赋予浮点类型的值。更正后的代码如 下所示:1. 2. balance =218.50;6 指出下面程序的编译或运行结果,并解释原因1. int i=128; 2. i = ; 3. System.out.println(i); 参考答案上述代码的第二行处,会出现编译错误。 原因是
是个整数直接量,整数的直接量的类型默认为 int 类型,而直 接写出的整数
超过了 int 的表达范围,所以会出现编译错误。7 通过代码计算一段程序运行的时间参考答案以下代码的功能为计算 1 累加到 1000000 的所耗的时间,代码如下所示:1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. &); 13.public static void main(String[] args) { //开始时间 long startTime = System.currentTimeMillis(); //计算从 1 加到 1000000 的和 int sum = 0; for (int i = 1; i &= 1000000; i++) { sum+=i; } //结束时间 long endTime = System.currentTimeMillis(); //输出耗时 System.out.println(&耗时: &+(endTime-startTime)+&毫秒}上述代码中,使用了 JDK 提供的 System.currentTimeMillis() 方法,该方法返回 1970 年 1 月 1 日零点到此时此刻所经历的毫秒数,其数据类型为 long,经常用于计时操 作。 另外,计算从 1 加到 1000000 的和的代码,了解即可,后续课程中会讲解到 for 循环 的。8 指出下面程序的运行输出结果1. 2. 3. double width = 6.0; double length = 4.9; System.out.println(width - length);参考答案上述代码的输出结果为:1.9996。 上述代码的运行结果存在舍入误差问题。由于计算机内部采用 2 进制,人使用 10 进 制,不是每一个 2 进制的小数都可以用 10 进制为表示的。2 进制系统中无法精确的表示 1/10,就好像十进制系统中无法精确的表示 1/3 一样。所以,2 进制表示 10 进制会有一 些舍入误差,对于一些要求精确运算的场合会导致代码的缺陷。9 指出下面程序的输出结果1. char ascii=98; 2. System.out.println(ascii);参考答案上述代码的输出结果为:b 原因是如果把 0~65535 范围内的一个 int 整数直接量赋给 char 类型变量,系统会自 动把这个 int 类型整数当成 char 类型来处理。本题中,说明系统自动把整数类型 98 当成 char 类型来处理,处理的结果为 b。98 是 b 的 unicode 码。 10 指出下面程序中的编译错误,并更正1. byte b1=10; 2. byte b2=20; 3. byte b3=b1+b2;参考答案上述代码在第三行会出现编译错误,原因是 b1+b2 的结果为 int 类型。更正后的代码 如下:1. byte b1=28; 2. byte b2=20; 3. int b3=b1+b2; 或者,使用强制类型转换,将 int 类型结果转换为 byte 类型,代码如下所示:1. byte b1=10; 2. byte b2=20; 3. byte b3=(byte)(b1+b2);11 指出下面程序的运行输出结果1. 2. 3. 4. + c2); int a = 1, b = 10; int c1 = a++; int c2 = ++b; System.out.println(&a=& + a + &, b=& + b + &, c1=& + c1 + &, c2=&参考答案输出结果为: 1. a=2, b=11, c1=1, c2=11 上述代码中,“int c1 = a++;”表示先将 a 的值 1 作为表达式 a++的值,然后 a 再 自加,故 a 的值为 2,最后,将 a++表达式的值 1 赋值给 c1,c1 的值为 1; “int c2 = ++b” 表示先将 b 的值自加, 然后将 b 的值作为++b 表达式的值赋给 c2, 故 b 的值为 11,c2 的值也为 11。12 指出下面程序的运行输出结果1. int i = 100, j = 200; 2. boolean b1 = (i & j) && (i++ & 100); 3. System.out.println(b1); 4. System.out.println(i);参考答案上述代码的输出结果为:1. false 2. 100 原因是对于“&&”,当第一个操作数为 false 时,将不会判断第二个操作数,因为此 时无论第二个操作数是什么最后的结果一定是 false。本题中(i&j)的结果为 false,因此 不会去计算(i++&100),所以变量 b1 的结果为 false,i 不会在自身的基础上加 1,值 为 100。13 完成收银柜台收款程序 V1.0 编写一个收银柜台收款程序。根据商品单价、购买数量以及收款金额计算并输出应收 金额和找零,控制台交互情况如图-1 所示。图- 1参考答案本案例的实现方案如图-2 所示。图- 2实现此案例需要按照如下步骤进行。 步骤一:定义类及 main 方法 首先定义一个名为 Cashier 的类,并在类中添加 Java 应用程序的主方法 main,代码 如下所示:1. public class Cashier { 2. 3. 4. 5. }public static void main(String[] args) {}步骤二:读取控制台输入 在 main 方法中,实例化 Scanner 类,并调用 Scanner 类的 nextDouble() 方法接收 用户从控制台输入的商品单价、购买数量、收款金额,使用完毕后将 scanner 对象关闭, 以释放资源。代码如下所示:1. import java.util.S2. 3. public class Cashier { 4. public static void main(String[] args) {5. 6. 7. 8. 9. 10. 11. 12. 13.14. 15. } }// 输入数据 Scanner console = new Scanner(System.in); System.out.println(&请输入单价(¥):&); double unitPrice = console.nextDouble(); System.out.println(&请输入数量:&); double amount = console.nextDouble(); System.out.println(&请输入金额(¥):&); double money = console.nextDouble(); console.close();在此需要注意导入 Scanner 类所在的包。 步骤三:计算所购商品总价及找零 首先,计算商品的总价;然后,将收款金额减去应收金额,即为找零;最后,输出应 收金额和找零金额,代码如下所示:1. import java.util.S 2. 3. public class Cashier { 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. // 计算商品总价 public static void main(String[] args) { // 输入数据 Scanner console = new Scanner(System.in); System.out.println(&请输入单价(¥):&); double unitPrice = console.nextDouble(); System.out.println(&请输入数量:&); double amount = console.nextDouble(); System.out.println(&请输入金额(¥):&); double money = console.nextDouble(); console.close();16. 17. 18. 19. 20.double totalPrice = 0.0; totalPrice = unitPrice * // 计算找零 double change = money - totalP System.out.println(&应收金额为:¥& + totalPrice + &, 找零为:¥& + change);21. 22. }}本案例的完整代码如下所示: 代码 1 指出下面程序的运行输出结果1. 2. 3. int a, b, a = b = c = 100; System.out.println(&a=&+a+&,b=&+b+&,c=&+c);参考答案上述代码的输出结果为:1. a=100,b=100,c=100 上述代码中,从右向左,首先,将 c 赋值为 100;然后将 c 的值赋值给了 b,同样 b 的值也为 100;最后,又将 b 的值赋给了 a,a 的值也为 100。2 指出下面程序的运行输出结果1. System.out.println(5+6+&&+5+6);参考答案上述代码的输出结果为:1. 1156 “+”有两种运算规则,一种是两端为数字则为数学加法运算,另外一种是实现字符 串的连接,也可以实现字符串与其他数据类型的“相连”。上述代码中,字符串之前的运 算按照加法运算,字符串之后的运算按照字符串相连。 3 输出两个 int 数中的最大值用户从控制台接收两个整数,通过程序找出两个数中的最大值。控制台的交互效果如 图-1 所示。图- 1参考答案实现此案例需要按照如下步骤进行。 步骤一:定义类及 main 方法 首先定义一个名为 MaxOfTwo 的类,并在类中添加 main 方法。代码如下所示:1. public class MaxOfTwo { 2. 3. 4. 5. } 步骤二:读取控制台的输入 在 main 方法中, 实例化 Scanner 类, 并调用 Scanner 类的 nextInt 方法接收用户从 控制台输入的两个整数,使用完毕后将 scanner 对象关闭。代码如下所示: } public static void main(String[] args) {1. import java.util.S2. 3. public class MaxOfTwo { 4. public static void main(String[] args) { 5. 隔开)&); 6. 7. 8. 9. scanner.close();10. 11. } 步骤三:计算最大值 }System.out.println(&请依次输入两个整数:a,b(以空格Scanner scanner = new Scanner(System.in); int a = scanner.nextInt(); int b = scanner.nextInt();使用三目运算符比较 a,b 两个整数的大小并输出结果。代码如下所示:1. import java.util.S 2. 3. public class MaxOfTwo { 4. 5. 隔开)&); 6. 7. 8. 9. Scanner scanner = new Scanner(System.in); int a = scanner.nextInt(); int b = scanner.nextInt(); scanner.close(); public static void main(String[] args) { System.out.println(&请依次输入两个整数:a,b(以空格10. 11.12. 13. } }int result=a&b?a:b; System.out.println(&最大值为&+result);本案例的完整代码如下所示:1. import java.util.S 2. 3. public class MaxOfTwo { 4. 5.public static void main(String[] args) { System.out.println(&请依次输入两个整数:a,b(以空格 隔开)&);6. 7. 8.Scanner scanner = new Scanner(System.in); int a = scanner.nextInt(); int b = scanner.nextInt();9. scanner.close(); 10. 11. 12. 13. } } int result=a&b?a:b; System.out.println(&最大值为&+result);4 编写三个数值的排序程序使用程序为用户所录入的 3 个数值进行升序排列,并将排序后的结果输出到控制台。 程序交互过程如图-3 所示:图- 3参考答案此案例需要接收用户从控制台录入的三个整数,并使用 if 语句对三个数值进行大小判 断。 首先,比较 a 和 b 的大小。如果 a 大于 b,则将 a 和 b 的值进行交换;然后再比较 a 和 c 的值,如果 a 的值大于 c,则继续交换;此时,a 中存储的则是三个数值中的最小 值; 继续比较, 将 b 和 c 中的数值进行比较, 如果 b 的值 大于 c, 则进行交换。 此时, c 中存储的则是三个数值中的最大值, 排序完毕。 最后将 a、 b、 c 中的数值输出到控制台。 实现此案例需要按照如下步骤进行。 步骤一:定义类及 main 方法 首先定义一个名为 SortOfThree 的类,并在类中定义 Java 应用程序的入口方法 main ,代码如下所示:1. public class SortOfThree { 2. 3. 4. } 步骤二:读取控制台的输入 在 main 方法中,实例化 Scanner 类,并调用 Scanner 类的 nextInt 方法接收用户从 控制台输入的三个数值,使用完毕后将 scanner 对象关闭。代码如下所示: public static void main(String[] args) { }1. import java.util.S2. public class SortOfThree { 3. public static void main(String[] args) {4. 5. 格隔开)&); 6. 7. 8. 9.Scanner scanner = new Scanner(System.in); System.out.println(&请依次输入三个整数:a,b,c(以空int a = scanner.nextInt(); int b = scanner.nextInt(); int c = scanner.nextInt(); scanner.close();10. System.out.println(&您输入的是:&); 11. System.out.println(&a=& + a + &, b=& + b + &, c=& + c); 12. 13. }}步骤三:找到三个数值中的最小值 定义临时变量 temp,并比较 a 和 b 的大小,如果 a 大于 b,则将 a 和 b 中的数值 进行交换;再比较 a 和 c 的大小,如果 a 大于 c,则将 a 和 c 中的数值进行交换。 此轮比较后,a 中存储的是三个数值中的最小值。代码如下所示:1. import java.util.S 2. public class SortOfThree { 3. 4. 5. 格隔开)&); 6. 7. 8. 9. 10. 11. int a = scanner.nextInt(); int b = scanner.nextInt(); int c = scanner.nextInt(); scanner.close(); System.out.println(&您输入的是:&); System.out.println(&a=& + a + &, b=& + b + &, c=& + c); public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println(&请依次输入三个整数:a,b,c(以空12. 13. 14. 15. 16. 17. 18. 19. 20. 21.int temp = 0; if (a & b) { temp = a = b = } if (a & c) { temp = a = c = 22.23. 24. } }}步骤四:找到三个数值中的最大值 继续比较 b 和 c 的大小,如果 b 大于 c ,则将 b 和 c 中的数值进行交换。此轮 比较后, c 中存储的数值则为三个数值中的最大值, 排序结束。 然后将结果输出到控制台。 代码如下所示:1. import java.util.S 2. public class SortOfThree { 3. 4. 5. 格隔开)&); 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. } if (a & c) { temp = a = int a = scanner.nextInt(); int b = scanner.nextInt(); int c = scanner.nextInt(); scanner.close(); System.out.println(&您输入的是:&); System.out.println(&a=& + a + &, b=& + b + &, c=& + c); int temp = 0; if (a & b) { temp = a = b = public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println(&请依次输入三个整数:a,b,c(以空 21. 22. }c =23. 24. 25. 26. 27. 28. 29. 30.31. }if (b & c) { temp = b = c = } System.out.println(&升序排列后,结果为:&); System.out.println(&a=& + a + &, b=& + b + &, c=& + c); }本案例的完整代码如下所示: 代码5 编写程序判断某一个年份是否为闰年(使用 if-else)本案例需要使用交互的方式判断某年是否为闰年:用户从控制台输入需要判断的年份 值,由程序使用 if-else 判断该年是否为闰年,并将判断结果输出到控制台。程序交互过程 如图-4 所示:图- 4参考答案实现此案例需要按照如下步骤进行。 步骤一:定义类及 main 方法 首先定义一个名为 LeapYear 的类,并在类中添加 main 方法。代码如下所示:1. public class LeapYear { 2. 3. 4. } 步骤二:读取控制台的输入 在 main 方法中, 实例化 Scanner 类, 并调用 Scanner 类的 nextInt 方法接收用户从 控制台输入的年份数值,使用完毕后将 scanner 对象关闭。代码如下所示: public static void main(String[] args) { }1. import java.util.S2. public class LeapYear { 3. public static void main(String[] args) {4. 5. 6. 7.8. 9. } 步骤三:闰年判断 }Scanner scanner = new Scanner(System.in); System.out.println(&请输入年份(例如:2012)&); int year = scanner.nextInt(); scanner.close();某年份只需要满足下列两个条件之一,即可认定是闰年:? ?年份可以被 4 整除且不能被 100 整除; 年份可以被 400 整除。在此,使用 if-else 来判断某一年是否为闰年。代码如下所示:1. import java.util.S 2. public class LeapYear { 3. 4. 5. 6. 7. public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println(&请输入年份(例如:2012)&); int year = scanner.nextInt(); scanner.close();8. 400==0 ){ 9. 10. 11. 12.13. 14. } }if((year % 4 == 0 && year % 100 != 0) || year %System.out.println(&是闰年&); }else{ System.out.println(&不是闰年&); }本案例的完整代码如下所示: 代码6 编写个人所得税计算程序个人所得税是国家对本国公民、居住在本国境内的个人的所得和境外个人来源于本国 的所得征收的一种所得税。目前,北京地区的个人所得税的计算公式为:应纳税额=(工 资薪金所得-扣除数)×适用税率-速算扣除数。其中,扣除数为 3500 元,适用税率以及 速算扣除数如下表所示。表-1 个人所得税缴纳标准 上表中的全月应纳税所得额=工资薪金所得-扣除数。 本案例要求计算个人所得税的缴纳额度:用户从控制台输入税前工资的金额,程序计 算所需要交纳的个人所得税的金额,并将计算结果输出到控制台。 程序的交互过程如图-5 所示:图- 5参考答案首先,程序从控制台接收税前的工资金额,然后根据表-1 中的规则进行计算。 需要使用 if-else if 语句来实现表-1 所示的计算规则,其计算过程如图-6 所示。 图- 6图-6 中,T 表示 true,F 表示 false,taxIncome 表示全月应纳税所得额,tax 表示 应交纳的个人所得税的税额。 实现此案例需要按照如下步骤进行。 步骤一:定义类及 main 方法 首先定义一个名为 IncomeTax 的类, 并在类中定义 Java 应用程序的入口方法 main , 代码如下所示:1. public class IncomeTax { 2. 3. public static void main(String[] args) { } 4. } 步骤二:读取控制台的输入 在 main 方法中,实例化 Scanner 类,并调用 Scanner 类的 nextDouble 方法接收 用户从控制台输入的税前工资金额,使用完毕后将 scanner 对象关闭。代码如下所示:1. import java.util.S2. public class IncomeTax { 3. public static void main(String[] args) {4. 5. &); 6. 7.8. 9. } 步骤三:计算个人所得税 }Scanner scanner = new Scanner(System.in); System.out.println(&请输入你的工资的税前金额(¥):double salary = scanner.nextDouble(); scanner.close();根据个人所得税计算公式,使用 if-else if 语句计算出个税并输出。代码如下:1. import java.util.S 2. public class IncomeTax { 3. 4. 5. &); 6. 7. double salary = scanner.nextDouble(); scanner.close(); public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println(&请输入你的工资的税前金额(¥):8. 9.double tax = 0.0; double taxIncome = salary - 3500; 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. tax);28. 29. } }if (taxIncome &= 0) { tax = 0.0; } else if (taxIncome &= 1500) { tax = taxIncome * 0.03; } else if (taxIncome &= 4500) { tax = taxIncome * 0.10 - 105; } else if (taxIncome &= 9000) { tax = taxIncome * 0.20 - 555; } else if (taxIncome &= 35000) { tax = taxIncome * 0.25 - 1005; } else if (taxIncome &= 55000) { tax = taxIncome * 0.30 - 2755; } else if (taxIncome &= 80000) { tax = taxIncome * 0.35 - 5505; } else { tax = taxIncome * 0.45 - 13505; } System.out.println(&你应该缴纳的个人所得税是:¥& +本案例的完整代码如下所示: 代码7 输入年份和月份,输出该月的天数(使用 switch-case)一年有 12 个月, 而每个月的天数是不一样的。 其中, 有 7 个月为 31 天, 称为大月, 分别为 1、3、5、7、8、10、12 月;有 4 个月为 30 天,称为小月,分别为 4、6、9、 11 月;还有二月比较特殊,平年的二月只有 28 天,而闰年的二月有 29 天。 本案例需要使用交互的方式计算某年某月的天数: 由用户在控制台输入年份和月份值, 程序计算该年该月的天数,并将结果输出在控制台。程序交互情况如图-7 所示:图- 7参考答案首先,此案例需要从控制台接收用户录入的年份和月份数值;然后,根据月份判断该 月是大月还是小月;再根据年份判断是否为闰年。各项判断完毕后,计算得出该年该月的 天数,并将结果输出到控制台。 实现此案例需要按照如下步骤进行。 步骤一:定义类及 main 方法 首先定义一个名为 DayOfMonth 的类,并在类中添加 main 方法。代码如下所示:1. public class DayOfMonth { 2. 3. 4. } 步骤二:读取控制台的输入 在 main 方法中,实例化 Scanner 类,并调用 Scanner 类的 nextInt 方法接收用户从 控制台输入的年份和月份数值,使用完毕后将 scanner 对象关闭。代码如下所示: public static void main(String[] args) { }1. import java.util.S 2. public class DayOfMonth { 3.public static void main(String[] args) {4. 5. 6. 7. 8. 9.10. 11. } }Scanner scanner = new Scanner(System.in); System.out.println(&请输入年份(例如:2012)&); int year = scanner.nextInt(); System.out.println(&请输入月份(例如:1)&); int month = scanner.nextInt(); scanner.close();步骤三:使用 switch-case 判断各个月份的天数 使用 switch-case,根据规则判断用户所录入的月份的天数。代码如下所示:1. import java.util.S 2. 3. public class DayOfMonth { 4. 5. 6. 7. 8. 9. 10. public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println(&请输入年份(例如:2012)&); int year = scanner.nextInt(); System.out.println(&请输入月份(例如:1)&); int month = scanner.nextInt(); scanner.close();11. 12. 13. 14. 15. 16.// 某月的天数 int days = 0; switch (month) { case 2: // 判断是否为闰年,闰年 29 天,非闰年 28 天 if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {17.days = 29; 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. + &天&);34. 35. } }} else { days = 28; } // 4,6,9,11 为小月 case 4: case 6: case 9: case 11: days = 30; // 其余为大月 default: days = 31; } System.out.println(year + &年& + month + &月有& + days在上述代码中,“case 2:”表示为 2 月,2 月为平月。在该 case 块中,使用 if-else 语句判断当前年是否为闰年。当为闰年的时候 2 月为 29 天,否则,2 月为 28 天。“case 4:”、“case 6:”、“case 9:”以及“case 11”分别表示为 4 月、6 月、9 月和 11 月,这些月为小月,天数为 30 天。另外,剩余的其它月份为大月,天数为 31 天,使用 default 分支中实现即可。 本案例的完整代码如下所示: 代码8 输出三个 int 数中的最大值(提高题,选做) 用户从控制台接收三个整数,通过程序找出三个数中的最大值。控制台的交互效果如 图-2 所示。图- 2参考答案实现此案例需要按照如下步骤进行。 步骤一:定义类及 main 方法 首先定义一个名为 MaxOfThree 的类,并在类中添加 main 方法。代码如下所示:1. public class MaxOfThree { 2. 3. 4. 5. } 步骤二:读取控制台的输入 在 main 方法中,实例化 Scanner 类,并调用 Scanner 类的 nextInt 方法接收用户从 控制台输入的三个整数,使用完毕后将 scanner 对象关闭。代码如下所示: } public static void main(String[] args) {1. import java.util.S 2. 3. public class MaxOfThree { 4. public static void main(String[] args) {5. 隔开)&); 6.System.out.println(&请依次输入三个整数:a,b,c(以空格Scanner scanner = new Scanner(System.in); 7. 8. 9. 10.11. 12. } 步骤三:计算最大值 }int a = scanner.nextInt(); int b = scanner.nextInt(); int c = scanner.nextInt(); scanner.close();使用三目运算符的嵌套,比较 a、b、c 三个整数的大小并输出结果。代码如下所示:1. import java.util.S 2. 3. public class MaxOfThree { 4. 5. 隔开)&); 6. 7. 8. 9. 10. Scanner scanner = new Scanner(System.in); int a = scanner.nextInt(); int b = scanner.nextInt(); int c = scanner.nextInt(); scanner.close(); public static void main(String[] args) { System.out.println(&请依次输入三个整数: a,b,c(以空格11. 12.13. 14. } }int result=(a&b?a:b)&c?c:(a&b?a:b); System.out.println(&最大值为&+result);本案例的完整代码如下所示:1. import java.util.S 2. 3. public class MaxOfThree { 4. public static void main(String[] args) { 5. 隔开)&); 6. 7. 8. 9. 10. 11. 12. 13. 14. } }System.out.println(&请依次输入三个整数: a,b,c(以空格Scanner scanner = new Scanner(System.in); int a = scanner.nextInt(); int b = scanner.nextInt(); int c = scanner.nextInt(); scanner.close(); int result=(a&b?a:b)&c?c:(a&b?a:b); System.out.println(&最大值为&+result);1 请描述 while 语句的执行流程while 语句的语法格式如下:1. while(表达式) { 2. 3. } 语句块参考答案while 语句,首先判断表达式的值是否为 true,如果为 true,则执行大括号中的语 句块;然后再判断表达式的值是否为 true,依次重复下去,直到表达式的值等于 false, 则不再执行大括号中的语句块,循环结束。2 指出下列程序运行后的情况1. public static void main(String[] args) { 2. 3. 4. { 5. 6. 7. 8. }int count=0; while(count&5);System.out.print(count+& &); count++; }参考答案这段代码会形成一个死循环。 乍一看,这段代码片段没有任何问题,但仔细看一下这个程序,不难发现 while 循环 的循环条件表达式后紧跟了一个分号。在 Java 中,一个单独的分号表示一个空语句,不做 任何事情的空语句,这意味着这个 while 循环的循环体是空语句。空语句作为循环体也不 是大问题,问题是当 Java 反复执行这个循环时,循环条件的返回值没有任何变化,这就形 成了一个死循环。分号后面的代码块则与 while 循环没有任何关系。3 指出下列代码运行后的结果1. 2. 3. 4. 5. 6. 7. 8. } public static void main(String[] args) { int count=10; do { System.out.print(count+& &); count++; }while(count&5);参考答案输出结果为:count=10。 从上面程序看,虽然 count 的值为 10,表达式 count&5 返回 false,但是 do-while 语句还是会执行一次循环体,输出 count=10。4 请简述 while 语句和 do-while 语句的区别参考答案while 语句和 do-while 语句的区别在于:while 语句是先判断循环条件,如果条件为 真则执行循环体;而 do-while 语句则先执行一次循环体,然后才判断循环条件,如果循 环条件为真,则执行下一次循环,否则终止循环。5 请简述 for 语句的执行流程for 语句的语法格式如下:1. for(表达式 1;表达式 2;表达式 3) { 2. 3. } 语句块参考答案for 语句,首先计算表达式 1,接着执行表达式 2,若表达式 2 的值等于 true,则执行 大括号中的语句块,接着计算表达式 3,然后再判断表达式 2 的值。依次重复下去,直到 表达式 2 的值等于 false。6 指出下列代码中,for 循环的各个表达式是否正确1. 2. 3. public static void main(String[] args) { for(int i=0,j=0,k=0;i&10&&j&4&&k&10;j+=2){ System.out.println(i++); 4. 5. 6. } }System.out.println(++k+i);参考答案正确。 首先,for 循环允许同时出现多个初始化语句。上面代码中初始化变量有三个,但是只 能有一个声明语句,因此如果需要在初始化表达式中声明多个变量,那么这些变量应该具 有相同的数据类型。 其次,循环条件也可以是一个包含逻辑运算符的表达式。上面代码中使用&&来组合 多个 boolean 表达式。 最后,循环迭代语句可以是任何表达式。上面代码中使用了 j+=2。7 指出下列代码的运行结果1. 2. 3. 4. 5. 6. 7. 8. } } } public static void main(String[] args) { for (int i = 0; i & 10; i++) { System.out.println(&i=& + i); if (i == 2) {参考答案输出结果为:i=0 i=1 i=2。 运行上面程序,将看到 i 循环到 2 时即结束,当 i 等于 2 时,循环体内遇到 break 语 句,程序跳出循环。8 指出下列代码的运行结果1. 2. 3. 4. 5. 6. 7. 8. } } } System.out.print(&i=& + i +& &); public static void main(String[] args) { for (int i = 0; i & 4; i++) { if (i == 2) {参考答案输出结果为:i=0 i=1 i=3 从上面输出结果可以看出, 当 i 等于 2 时,程序没有输出 i=2,因为程序执行到 continue 时,忽略了当次循环中 continue 语句后的代码。9 数列求和有数列为:9,99,999,...,。要求使用程序计算此数列的和,并在控 制台输出结果。交互效果如图-1 所示。图- 1 另有数列:1+1/2+1/3…+1/n(n&=2)。要求使用交互的方式计算此数列的和:用 户在控制台录入需要计算的整数 n 的值,程序计算此数列的和,并在控制台输出结果。程 序的交互过程如图-2 所示。图- 2参考答案程序需要使用 for 循环计算数列的和,然后将计算出来的和输出到控制台。 实现此案例需要按照如下步骤进行。 步骤一:定义类及 main 方法 首先定义一个名为 SumOfSeq 的类, 并在类中定义 Java 应用程序的入口方法 main , 代码如下所示:1. public class SumOfSeq{ 2. 3. 4. } 步骤二:计算第一个数列的和 使用 for 循环计算数列的和,然后将计算出来的和值输出到控制台。代码如下: public static void main(String[] args) { }1. public class SumOfSeq { 2. 3. 4. public static void main(String[] args) { // 数列求和 long nine = 9; 5. 6. 7. 8. 9. 10. result); 11. 12. } }long result = for (int i = 2; i &= 10; i++) { nine = nine * 10 + 9; result += } System.out.println(&9+99+999+...+=& +步骤三:计算第二个数列的和 新建类 SumOfSeq2,以计算第二个数列(1+1/2+1/3…+1/n)的和。代码如下:1. import java.util.S 2. 3. public class SumOfSeq2 { 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. &+&); 16. 17. } } }else{ System.out.print(&1/& + i + double result = 0; for (int i = 1; i & i++) { result += 1.0 / if(i==1){ System.out.print(&1+&); public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println(&请输入整数(例如 10):&); int n = scanner.nextInt(); 18. 19. 20. 21. 22. } }result += 1.0 /System.out.print(&1/& + n + &=& + result);本案例的完整代码如下所示: 计算第一个数列(9+99+999+...+)和的完整代码如下所示: 代码 计算第二个数列(1+1/2+1/3…+1/n)和的完整代码如下所示: 代码1 质数问题本案例要求使用交互的方式找出从 2 开始到某个数值范围内的所有质数, 并输出结果。 因为输出的质数可能较多,要求分行输出,每行最多输出 10 个质数。程序的交互过程如 图-1 所示:图- 1注:质数又称素数,指在大于 1 的自然数中,除了 1 和此整数自身外,不能被其它自 然数整除的数。参考答案 首先, 使用 Scanner 类接收控制台输入的一个大于 2 的整数 max,表示查找的范 围。 其次,使用 for 循环从数值 2 开始进行判断,判断该数值是否为质数,然后判断数 值 3、数值 4 … ,逐一判断到 max 为止。 第三,判断某个数值是否为质数,需要在第二步的 for 循环内嵌套使用 for 循环。那 么如何判断一个数是否为质数呢, 如果一个数 n 不是质数, 那么它一定是某两个整数的乘 积。此时,如果其中一个整数大于 n 的平方根,那么必定能找到一个小于 n 的平方根的 整数和它成对。例如,81 的平方根是 9,那么,我们只需要判断从 2 到 9 之间是否有整数 可以整除 81 即可。因此,在判断数值 n 是否为质数时,需要让 n 除以 2 到 n 的平方 根之间的每一个整数。在此范围内,如果 n 能被 2 到 n (n 大于 2)的平方根之间的某个 数整除,则说明 n 不是质数,否则 n 一定是质数。 最后,如果判断某个数值确实是质数,则需要记载质数的个数,并将该质数输出。为 保证输出的美观,要求每行最多输出 10 个数值。因此,输出时,需要判断质数的总个数 是否可以被 10 整除。如果不可以被 10 整除,则输出在同一行,数值之间用空格隔开, 否则,输出到下一行。 实现此案例需要按照如下步骤进行。 步骤一:定义类及 main 方法 首先定义一个名为 PrimeNumber 的类,并在类中定义 Java 应用程序的入口方法 main ,代码如下所示:1. import java.util.S 2. public class PrimeNumber { 3. public static void main(String[] args) { 4. 5. 6. } 步骤二:读取控制台的输入 在 main 方法中,实例化 Scanner 类,并调用 Scanner 类的 nextInt 方法接收用户从 控制台输入的表示查找范围的数值,使用完毕后将 scanner 对象关闭。代码如下所示: }1. import java.util.S 2. public class PrimeNumber { 3. public static void main(String[] args) {4. 5. 6. 7.8. 9. } 步骤三:查找质数 }Scanner scanner = new Scanner(System.in); System.out.print(&请输入查找质数的范围:2~&); int max = scanner.nextInt(); scanner.close();使用双层 for 循环判断某个数是否为质数,其中,外层循环用于循环判断某范围内的 每个数值; 内层循环用于判断某个数是否为质数。 在判断数值 n 是否为质数时,需要让 n 除以 2 到 n 的平方根之间的每一个整数。 在此范围内,如果 n 能被 2 到 n (n 大于 2)的平方根之间的某个数整除,则说明 n 不是 质数,直接进入下一次质数的判断即可。代码如下所示:1. import java.util.S 2. public class PrimeNumber { 3. 4. public static void main(String[] args) { Scanner scanner = new Scanner(System.in); 5. 6. 7. 8.System.out.print(&请输入查找质数的范围:2~&); int max = scanner.nextInt(); scanner.close();9. 10. 11. 12. 13. 14. 15. 16. 17. 18.19. 20. } 步骤四:输出结果 }int numOfPrime = 0; for (int n = 2; n &= n++) { // 判断 n 是否是质数 int m = (int) Math.sqrt(n); int i = 2; for (; i &= i++) { if (n % i == 0) } }如果内层循环结束后,发现计数器 i 的值大于 n 的平方根的整数部分,则说明 n 没 有被 2 到 n (n 大于 2)的平方根之间的任何一个数整除,即 n 为质数。此时,需要记载质 数的总个数,并以每行 10 个数值的方式输出结果。代码如下所示:1. import java.util.S 2. public class PrimeNumber { 3. 4. 5. 6. 7. 8. public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print(&请输入查找质数的范围:2~&); int max = scanner.nextInt(); scanner.close(); 9. 10. 11. 12. 13. 14. 15. 16. 17.int numOfPrime = 0; for (int n = 2; n &= n++) { // 判断 n 是否是质数 int m = (int) Math.sqrt(n); int i = 2; for (; i &= i++) { if (n % i == 0) }18. 19. 20. 21. 22.23. }if (i & m) { System.out.print(n + & &); if (++numOfPrime % 10 == 0) System.out.println(); }24.25. 26. } }System.out.println(&\n 共有& + numOfPrime + &个质数&);本案例的完整代码如下所示: 代码2 int[]是一种数据类型吗?参考答案int[]是一种数据类型,是引用类型。与 int 类型,double 类型类似,一样可以使用该 类型定义变量。3 使用两种方式,初始化数组 arr 的长度为 4 参考答案对数组进行初始化,方式一的代码为:1. int[] arr={23,45,19,34}; 上述数据初始化的方式为定义的同时对数据进行赋值。 方式二的代码为:1. int[] arr=new int[4]; 上述初始化方式为只指定数组的长度,由系统为每个数组元素指定初始值。4 查询数组最小值,并将数组扩容形成新数组创建程序,实现查询数组中最小值的功能,并将最小值放入数组的第一位。需求为: 创建一个长度为 10 的数组,数组内放置 10 个 0 到 99 之间(包含 0,包含 99)的随 机整数作为数组元素,要求查询出数组中的最小值,并打印显示在界面上。然后,将数组 的长度扩容为 11,将查询到的数组最小值记载为数组的第一个元素,并打印扩容后的数 组的内容。界面效果如图-2 所示:图- 2参考答案首先需要创建一个长度为 10 的整型数组,然后使用 for 循环来产生 10 个 0 到 99 之间的随机整数,并放入数组; 然后查询数组中的最小值,并打印显示结果。 第三, 首先将原始组进行扩容, 形成新数组。 然后, 可以使用 System 类的 arraycopy() 方法实现数组的拷贝,代码如下所示:1. int[] arrNew = new int[arr.length + 1]; 2. System.arraycopy(arr, 0, arrNew, 1, arrNew.length-1); 如果数组 arr 的长度为 10,那么,上述代码将产生一个长度为 11 的新数组 arrNew,且此数组中的后 10 个元素和数组 arr 中的 10 个元素相同。 最后,将查询到的最小值放入新数组的第一个位置上,并打印新数组的内容即可。 实现此案例需要按照如下步骤进行。 步骤一:定义类及 main 方法 首先定义一个名为 MinOfArray 的类,并在类中添加 Java 应用程序的主方法 main, 代码如下所示:1. public class MinOfArray{ 2. 3. 4. } 步骤二:创建数组 在 main 方法中创建一个长度为 10 的数组,代码如下: public static void main(String[] args) { }1. public class MinOfArray { 2. 3. public static void main(String[] args) { //创建一个 10 个长度的数组4.int[] arr = new int[10]; 5. 6. }}步骤三:数组的赋值 使用 for 语句构建一个 10 次的循环, 在每次循环中, 随机产生一个 0 到 99 之间的 整数,并存入数组。 此案例中,使用 Random 类的 nextInt 方法产生随机数。代码如下所示:1. import java.util.R2. 3. public class MinOfArray { 4. 5. 6. 7. public static void main(String[] args) { //创建一个 10 个长度的数组 int[] arr = new int[10];8. 9. 10. 11. 12.13. 14. } }//随机生成 10 个 0-99 之间的数值,放入数组 Random ran = new Random(); for(int i=0;i&arr.i++){ arr[i] = ran.nextInt(100); }注意:此步骤中,需要导入 java.util 包下的 Random 类。 步骤四:打印数组内容 数组赋值后, 为方便用户查看数组中的数据内容, 需要将数组中的数据打印在界面上。 因此,需要使用 Arrays 类的 toString 方法来得到数组的内容。代码如下所示:1. import java.util.R 2. import java.util.A3. 4. public class MinOfArray { 5. 6. 7. 8. 9. 10. 11. 12. ran.nextInt(100); 13. } //随机生成 10 个 0-99 之间的数值,放入数组 Random ran = new Random(); for(int i=0;i&arr.i++){ arr[i] = public static void main(String[] args) { //创建一个 10 个长度的数组 int[] arr = new int[10];14. 15.//打印数组中的数据 System.out.println(&数组中的数据为:& + Arrays.toString(arr));16. 17. }}注意:此步骤中,需要导入 java.util 包下的 Arrays 类。 步骤五:查询最小值 为找到数组中的最小值,依然需要使用循环来遍历数组。先定义一个变量 min 用于 表示最小值, 并赋初始值为数组中的第一个数值; 然后依次把数组中的元素与变量 min 进 行数值比较,如果数组中的某元素的数值小于 min,则将该元素的数值存入变量 min, 并将最小值输出。代码如下所示:1. import java.util.R 2. import java.util.A 3. 4. public class MinOfArray { 5. 6. 7. 8. 9. 10. 11. 12. ran.nextInt(100); 13. 14. 15. } //打印数组中的数据 System.out.println(&数组中的数据为:& + Arrays.toString(arr)); 16. //随机生成 10 个 0-99 之间的数值,放入数组 Random ran = new Random(); for(int i=0;i&arr.i++){ arr[i] = public static void main(String[] args) { //创建一个 10 个长度的数组 int[] arr = new int[10];17. 18. 19. 20. 21. 22. 23. 24.25. 26. } 步骤六:数组扩容 }//查询最小值 int min = arr[0]; for(int i=1; i&arr. i++) { if(min & arr[i]) { min = arr[i]; } } System.out.println(&最小值是:& + min);创建新数组,新数组的长度,在原数组长度的基础上增加 1。且此数组中的后 10 个 元素和原数组中的 10 个元素相同,代码如下所示:1. import java.util.R 2. import java.util.A 3. 4. public class MinOfArray { 5. 6. 7. 8. 9. 10. 11. 12. ran.nextInt(100); 13. 14. 15. } //打印数组中的数据 System.out.println(&数组中的数据为:& + Arrays.toString(arr)); 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. } System.out.println(&最小值是:& + min); } //查询最小值 int min = arr[0]; for(int i=1; i&arr. i++) { if(min & arr[i]) { min = arr[i]; //随机生成 10 个 0-99 之间的数值,放入数组 Random ran = new Random(); for(int i=0;i&arr.i++){ arr[i] = public static void main(String[] args) { //创建一个 10 个长度的数组 int[] arr = new int[10];26. 27. 28. 29.30. 31. } }//创建新数组 int[] arrNew = new int[arr.length + 1]; //将原数组的元素拷贝进入新数组 System.arraycopy(arr, 0, arrNew, 1, arrNew.length-1); 步骤七:存储最小值并打印数组内容 将查询到的数组最小值放入新数组的第一个位置,并打印数组内容显示。代码如下所 示:1. import java.util.R 2. import java.util.A 3. 4. public class MinOfArray { 5. 6. 7. 8. 9. 10. 11. 12. ran.nextInt(100); 13. 14. 15. } //打印数组中的数据 System.out.println(&数组中的数据为:& + Arrays.toString(arr)); 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. } System.out.println(&最小值是:& + min); } //查询最小值 int min = arr[0]; for(int i=1; i&arr. i++) { if(min & arr[i]) { min = arr[i]; //随机生成 10 个 0-99 之间的数值,放入数组 Random ran = new Random(); for(int i=0;i&arr.i++){ arr[i] = public static void main(String[] args) { //创建一个 10 个长度的数组 int[] arr = new int[10]; 26. 27. 28. 29. 30.//创建新数组 int[] arrNew = new int[arr.length + 1]; //将原数组的元素拷贝进入新数组 System.arraycopy(arr, 0, arrNew, 1, arrNew.length-1);31. 32. 33.//最小值放入新数组第一位,并打印新数组 arrNew[0] = System.out.println(&新数组中的数据为:& + Arrays.toString(arrNew));34. 35. }}本案例的完整代码如下所示: 代码5 总结冒泡排序算法的原理参考答案冒泡算法的原理如下: 在冒泡排序算法中,需要重复的走访要排序的数列,一次比较两个元素,如果它们的 顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换的元素, 也就是说该数列已经排序完成。1 随机生成数组封装一个方法 generateArray,该方法实现生成指定长度的 int 数组,该数组的元素 为 0 到指定范围内的随机数,并将该数组返回。 参考答案首先,分析 generateArray 方法要实现的功能,该方法要求生成指定长度的数组,那 么,指定长度要作为方法的参数,用户调用该方法时,传入指定的长度即可。另外,该方 法还要求数组中的元素为指定范围的,那么,指定范围也要作为方法的参数,这样用户调 用该方法时,传入这个范围的值即可。 其次,该方法,要求返回生成后的数组,根据要求我们就可以确定该方法的返回值类 型为 int[]数组类型。 最后,在实现 generateArray 方法。在实现该方法的过程中,注意将参数使用到方法 中正确位置。 实现此案例需要按照如下步骤进行。 步骤一:定义 generateArray 方法 首先,定义一个名为 ArrayUtil 的类,在该类中添加 generateArray 方法,代码如下 所示:1. public class ArrayUtil { 2. 3. /** * 该方法实现生成指定长度的 int 数组, 该数组的元素为指定范围内 的随机数,并返回该数组 4. 5. 6. 7. 8. 9. 10. * * @param length * * @param max * 指定范围的值 指定数组的长度* @return 生成的数组 */ 11. 12. 13. 14. }public static int[] generateArray(int length, int max) {}查看上面代码中定义的 generateArray 方法,其中,参数 length 表示要生成的数组 的长度, 参数 max 表示随机生成数组元素的最大范围。 另外, int[]表示数组的返回值类型。 步骤二:设置返回值 在 generateArray 方法中,定义长度为 length 的数组。代码如下:1. public class ArrayUtil { 2. 3. /** * 该方法实现生成指定元素数目的数组, 该数组的元素为指定范围内 的随机数,并返回该数组 4. 5. 6. 7. 8. 9. 10. 11. * * @param length * * @param max * 指定范围的最大值 指定数组的长度* @return 生成的数组 */ public static int[] generateArray(int length, int max) {12. 13. 14. 15. 16. 17.18. 19. } }// 创建长度为 length 的数组 int[] arr = new int[length];// 返回生成的数组 在编写代码时,定义完成数组后,可以直接写出 return 语句,返回数组 arr,这样就 除去了开发工具提示的编译错误。 步骤三:数组的赋值 使用 for 语句构建一个 length 次的循环,在每次循环中,随机产生一个 0 到 max 之间的整数,并存入数组。 此案例中,使用 Random 类的 nextInt 方法产生随机数。代码如下所示:1. import java.util.R2. 3. public class ArrayUtil { 4. 5. /** * 该方法实现生成指定元素数目的数组, 该数组的元素为指定范围内 的随机数,并返回该数组 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. * * @param length * * @param max * 指定范围的最大值 指定数组的长度* @return 生成的数组 */ public static int[] generateArray(int length, int max) { // 创建长度为 length 的数组 int[] arr = new int[length];17. 18. 19. 20. 21.// 循环生成 length 个数值,并赋值给数组的元素 Random ran = new Random(); for (int i = 0; i & i++) { arr[i] = ran.nextInt(max); } 22. 23. 24. 25. } }// 返回生成的数组注意:此步骤中,需要导入 java.util 包下的 Random 类。 步骤四:调用方法 在 main 方法中, 调用 generateArray 方法, 接收方法的返回的数组, 并输出该数组。 代码如下所示:1. import java.util.A 2. import java.util.R 3. 4. public class ArrayUtil { 5. 6. /** * 该方法实现生成指定元素数目的数组, 该数组的元素为指定范围内 的随机数,并返回该数组 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. // 循环生成 length 个数值,并赋值给数组的元素 Random ran = new Random(); * * @param length * * @param max * 指定范围的最大值 指定数组的长度* @return 生成的数组 */ public static int[] generateArray(int length, int max) { // 创建长度为 length 的数组 int[] arr = new int[length]; 20. 21. 22. 23. 24. 25. }for (int i = 0; i & i++) { arr[i] = ran.nextInt(max); } // 返回生成的数组26. 27. 28. 29. 30.public static void main(String[] args) { //调用生成数组的方法 int[] arr=generateArray(6,100); //输出生成的数组 System.out.println(&生成的数组为: &+Arrays.toString(arr));31.32. }}本案例的完整代码如下所示: 代码2 猜字母游戏――实现游戏等级为猜字母游戏添加游戏等级。游戏等级设为三等:5、7 和 9,代表所需要猜测的字母 个数。游戏开始时,由玩家选择游戏等级(5,7,9)。如果选择 7,则会随机产生 7 个 字符, 然后玩家输入一个字符串包含 7 个字符, 看这 7 个字符和随机产生的 7 个字符比较, 看是否正确,并统计分数。另外,如果输入其它,重新提示输入游戏等级。系统交互情况 如图-1 所示: 图- 1参考答案首先,使用循环,判断玩家输入的等级。如果玩家输入的等级不是 5,7,9 当中的一 个,那么循环一直进行下去。 其次,在循环中,使用 Scanner 类的 nextInt 方法,接收控制台输入的游戏等级。 实现此案例需要按照如下步骤进行。 步骤一:判断玩家输入的等级 在课上案例的基础上,首先,在 GuessingGame 类的 main 方法中,使用 do-while 循环,判断玩家输入的等级。循环进行的条件为:玩家输入的等级不是 5,7,9 当中的一 个,即,当用户输入非 5,7,9 当中一个时,循环继续;然后,更改 generate 方法的声 明,传入等级参数,代码如下所示:1. import java.util.S 2. 3. public class GuessingGame { 4. 5. 6. 7. 8. 9. public static void main(String[] args) { // 表示玩家猜测的次数 int count = 0; // 用于保存判断的结果 int[] result = new int[2]; Scanner scanner = new Scanner(System.in); 10. &); 11. 12.System.out.println(&GuessingGame&欢迎尝试猜字母游戏!// 表示游戏等级,默认为 513. 14. 15. 16.17. 18.int level = 5; do {} while (level != 5 && level != 7 && level != 9);// 表示猜测的字符串19.20. 21.char[] chs = generate(level);System.out.println(chs); System.out.println(&GuessingGame&游戏开始, 请输入你所 猜的 5 个字母序列:(exit――退出)&);22. 23.while (true) { String inputStr = scanner.next().trim().toUpperCase();24. 25. 谢你的尝试,再见!&); 26. 27. 28. 29. 30. 31. 况 32. 10; 33.if (&EXIT&.equals(inputStr)) { System.out.println(&GuessingGame&谢 }char[] input = inputStr.toCharArray(); result = check(chs, input); if (result[0] == chs.length) {// 完全猜对的情int score = 100 * chs.length - count *System.out.println(&GuessingGame&恭 喜你猜对了!你的得分是:& + score);34. 35. 36. 37.} else { count++; System.out.println(&GuessingGame&你 猜对& + result[1] + &个字符,其中&38.+ result[0] + &个字符 的位置正确!(总次数=& + count + &,exit――退出)&);39. 40. 41. 42. 43. 44. 45. 46. 47. 48. /** } }}scanner.close();* 随机生成需要猜测的字母序列 * * @return 存储随机字符的数组 */49.50. 51.public static char[] generate(int level) {char[] letters = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',52. 'S', 'T', 'U', 'V', 53. 54.'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R','W', 'X', 'Y', 'Z' }; boolean[] flags = new boolean[letters.length];55.56. 57. 58. 59.char[] chs = new char[level];for (int i = 0; i & chs. i++) { do { index = (int) (Math.random() * (letters.length));60. 重复} while (flags[index]);// 判断生成的字符是否 61. 62. 63. 64. 65. 66. 67. 68. /** } }chs[i] = letters[index]; flags[index] =* 比较玩家输入的字母序列和程序所生成的字母序列, 逐一比较字符 及其位置,并记载比较结果69. 70. 71. 72. 73. 74.* * @param chs * 程序生成的字符序列* @param input * 玩家输入的字符序列* @return 存储比较的结果。返回值 int 数组 的长度为 2,其中, 索引为 0 的位置75.*用于存放完全猜对的字母个数(字符和位置均正确), 索引为 1 的位置用于存放猜对的字母个数(字符正确,但是位置不正确)。 76. 77. 78. 79. 80. 81. 是否正确 82. 83. 正确 84. 85. 86. 87. } } result[0]++; result[1]++; if (i == j) {// 判断位置是否 */ public static int[] check(char[] chs, char[] input) { int[] result = new int[2]; for (int i = 0; i & input. i++) { for (int j = 0; j & chs. j++) { if (input[i] == chs[j]) {// 判断字符 88. 89. 90. 91. 92. } 步骤二:接收控制台输入 } }}在循环中,首先提示玩家输入游戏等级,然后使用 Scanner 类的 nextInt 方法,接收 玩家输入的信息。代码如下所示:1. import java.util.S 2. 3. public class GuessingGame { 4. 5. 6. 7. 8. 9. 10. &); 11. 12. 13. 14. // 表示游戏等级,默认为 5 int level = 5; do { public static void main(String[] args) { // 表示玩家猜测的次数 int count = 0; // 用于保存判断的结果 int[] result = new int[2]; Scanner scanner = new Scanner(System.in); System.out.println(&GuessingGame&欢迎尝试猜字母游戏!15. 别(5、7、9)?&); 16.17. 18. 19.System.out.print(&GuessingGame&请输入游戏级level = scanner.nextInt();} while (level != 5 && level != 7 && level != 9);// 表示猜测的字符串 20. 21. 22.char[] chs = generate(level); System.out.println(chs); System.out.println(&GuessingGame&游戏开始, 请输入你所 猜的 5 个字母序列:(exit――退出)&);23. 24.while (true) { String inputStr = scanner.next().trim().toUpperCase();25. 26. 谢你的尝试,再见!&); 27. 28. 29. 30. 31. 32. 况 33. 10; 34.if (&EXIT&.equals(inputStr)) { System.out.println(&GuessingGame&谢 }char[] input = inputStr.toCharArray(); result = check(chs, input); if (result[0] == chs.length) {// 完全猜对的情int score = 100 * chs.length - count *System.out.println(&GuessingGame&恭 喜你猜对了!你的得分是:& + score);35. 36. 37. 38. } else { count++; System.out.println(&GuessingGame&你 猜对& + result[1] + &个字符,其中&39.+ result[0] + &个字符 的位置正确!(总次数=& + count + &,exit――退出)&);40. 41. 42. 43. } }}scanner.close(); 44. 45. 46. 47. 48. 49. 50. 51. 52. 'H', 'I', 'J', 53. 'S', 'T', 'U', 'V', 54. 55. 56. 57. 58. 59. 60. (letters.length)); 61. 重复 62. 63. 64. 65. 66. 67. 68. 69. /** * 比较玩家输入的字母序列和程序所生成的字母序列, 逐一比较字符 及其位置,并记载比较结果 70. * } } chs[i] = letters[index]; flags[index] = } while (flags[index]);// 判断生成的字符是否 'W', 'X', 'Y', 'Z' }; boolean[] flags = new boolean[letters.length]; char[] chs = new char[level]; for (int i = 0; i & chs. i++) { do { index = (int) (Math.random() * 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', char[] letters = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', /** * 随机生成需要猜测的字母序列 * * @return 存储随机字符的数组 */ public static char[] generate(int level) { 71. 72. 73. 74. 75.* @param chs * 程序生成的字符序列* @param input * 玩家输入的字符序列* @return 存储比较的结果。返回值 int 数组 的长度为 2,其中, 索引为 0 的位置76.*用于存放完全猜对的字母个数(字符和位置均正确), 索引为 1 的位置用于存放猜对的字母个数(字符正确,但是位置不正确)。 77. 78. 79. 80. 81. 82. 是否正确 83. 84. 正确 85. 86. 87. 88. 89. 90. 91. 92. 93. } 本案例的完整代码如下所示: 代码 } } } } } result[0]++; result[1]++; if (i == j) {// 判断位置是否 */ public static int[] check(char[] chs, char[] input) { int[] result = new int[2]; for (int i = 0; i & input. i++) { for (int j = 0; j & chs. j++) { if (input[i] == chs[j]) {// 判断字符
医古文习题集(最全面)_其它_高等教育_教育专区。看完这个医古文习题集,你的考试妥妥的。相信我,我是过来人。《秦医缓和》一、单项选择题 1.在“是谓近女室,...画法几何习题集答案_理学_高等教育_教育专区 暂无评价|0人阅读|0次下载|举报文档 画法几何习题集答案_理学_高等教育_教育专区。第五版...单片机习题集(含答案)经典_工学_高等教育_教育专区。单片机原理及应用习题 第一章 1-1 单项选择 1、计算机中最常用的字符信息编码是( (A)ASCII (B)BCD 码 ...算法分析与设计习题集整理_理学_高等教育_教育专区 暂无评价|0人阅读|0次下载|举报文档 算法分析与设计习题集整理_理学_高等教育_教育专区。算法分析与设计复习习题...王幼龙习题集答案 隐藏&& 分享到:
使用一键分享,轻松赚取财富值, 了解详情
嵌入播放器: 普通尺寸(450*500pix) 较大尺寸(630*500pix) 预览复制...会计基础最新习题集(基础)_财会/金融考试_资格考试/认证_教育专区。《会计基础》课堂习题 会计基础》一、单项选择题(请从下列各题的备选答案中,选出一个最符合...三基训练习题集内科(完整整理版题目及答案)_从业资格考试_资格考试/认证_教育专区。第一章 呼吸内科 一、名词解释 1、呼吸膜:呼吸膜指肺泡与血液间气体分子交换所...如果您初学java,那么这50道经典习题你千万不能错过。这些习题针对java基础的高度整合运用,绝对能让你夯实自己的java基础。沃克IT 教育 JAVA 基础编程练习题整理:...b 的函数值 y 小于 0 时,自变 量 x 的取值范围就是不等式④的解集. (...初中数学精选习题2 暂无评价 14页 1下载券 喜欢此文档的还喜欢
初中数学练习...临床检验基础习题集_医学_高等教育_教育专区。第一章 血液标本采集和血涂片检查 一、 选择题 (一) 、A1 型题(标准型) 1. 静脉采血法的采血部位首选: A. ...
All rights reserved Powered by
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。

我要回帖

更多关于 舱位等级字母 的文章

 

随机推荐