实例 46

题目

两个字符串连接程序。

分析

要实现两个字符串的连接有多种方法,其中最简单的就是利用 + 来实现。

实现

  1. import java.util.Scanner;
  2. /**
  3. * Created with IntelliJ IDEA.
  4. *
  5. * @author : cunyu
  6. * @version : 1.0
  7. * @email : 747731461@qq.com
  8. * @website : https://cunyu1943.github.io
  9. * @date : 2021/6/7 15:29
  10. * @project : Java 编程实例
  11. * @package : PACKAGE_NAME
  12. * @className : Example46
  13. * @description :
  14. */
  15. public class Example46 {
  16. public static void main(String[] args) {
  17. Scanner scanner = new Scanner(System.in);
  18. System.out.println("输入一个字符串");
  19. String str1 = scanner.nextLine();
  20. System.out.println("再输入一个字符串");
  21. String str2 = scanner.nextLine();
  22. System.out.println("连接后的字符串为:" + str1 + str2);
  23. }
  24. }

结果

那些年,我们一起做过的 Java 课后练习题(46 - 50) - 图1

实例 47

题目

读取 7 个数(1 - 50)的整数值,每读取一个值,就打印该值个数的 *

分析

主要就是考验循环和打印的用法,难度不大。

实现

  1. import java.util.Scanner;
  2. /**
  3. * Created with IntelliJ IDEA.
  4. *
  5. * @author : cunyu
  6. * @version : 1.0
  7. * @email : 747731461@qq.com
  8. * @website : https://cunyu1943.github.io
  9. * @date : 2021/6/7 15:29
  10. * @project : Java 编程实例
  11. * @package : PACKAGE_NAME
  12. * @className : Example47
  13. * @description :
  14. */
  15. public class Example47 {
  16. public static void main(String[] args) {
  17. Scanner scanner = new Scanner(System.in);
  18. int num = 0;
  19. int count = 1;
  20. while (count <= 7) {
  21. do {
  22. System.out.println("输入一个 1 - 50 之间的整数");
  23. num = scanner.nextInt();
  24. } while (num < 1 || num > 50);
  25. // 打印 * 号
  26. for (int i = 0; i < num; i++) {
  27. System.out.print("*");
  28. }
  29. System.out.println();
  30. count++;
  31. }
  32. }
  33. }

结果

那些年,我们一起做过的 Java 课后练习题(46 - 50) - 图2

实例 48

题目

某公司采用公用电话传递数据,数据是四位整数,在传递过程中是加密的,加密规则如下:每位数字都加上 5 然后用和除以 10 的余数来代替该数字,再将第一位和第四位交换,第二位和第三位交换。

分析

实现起来很简单,只不过要把步骤分开:

  1. 首先输入四位数之后,将其个位、十位、百位、千位都分解出来;
  2. 然后将各位都加上 5,然后求和后除以 10 的余数代替各位上的数;
  3. 最后则是将第一位和第四位交换,第二位和第三位交换;

实现

  1. import java.util.Scanner;
  2. /**
  3. * Created with IntelliJ IDEA.
  4. *
  5. * @author : cunyu
  6. * @version : 1.0
  7. * @email : 747731461@qq.com
  8. * @website : https://cunyu1943.github.io
  9. * @date : 2021/6/7 15:29
  10. * @project : Java 编程实例
  11. * @package : PACKAGE_NAME
  12. * @className : Example48
  13. * @description :
  14. */
  15. public class Example48 {
  16. public static int SIZE = 4;
  17. public static void main(String[] args) {
  18. Scanner scanner = new Scanner(System.in);
  19. System.out.println("输入一个四位的整数");
  20. int num = scanner.nextInt();
  21. int[] arr = new int[SIZE];
  22. // 千位
  23. arr[0] = num / 1000;
  24. // 百位
  25. arr[1] = num % 1000 / 100;
  26. // 十位
  27. arr[2] = num / 10 % 10;
  28. // 个位
  29. arr[3] = num % 10;
  30. // 每个数字都加上 5,然后除以 10 的余数代替
  31. for (int i = 0; i < SIZE; i++) {
  32. arr[i] += 5;
  33. arr[i] %= 10;
  34. }
  35. // 交换 1,3 位,2,4 位
  36. for (int i = 0; i <= 1; i++) {
  37. int tmp = arr[i];
  38. arr[i] = arr[SIZE - 1 - i];
  39. arr[SIZE - 1 - i] = tmp;
  40. }
  41. System.out.println("加密后的数字");
  42. for (int i = 0; i < SIZE; i++) {
  43. System.out.print(arr[i]);
  44. }
  45. }
  46. }

结果

那些年,我们一起做过的 Java 课后练习题(46 - 50) - 图3

实例 49

题目

计算字符串中子串出现的次数。

分析

分别输入两个字符串,然后利用 equals() 对比字符串中等同于子字符串的情况,出现则次数加一,不过要注意的是当两个字符串均为空的时候,此时无法比较。

实现

  1. import java.util.Scanner;
  2. /**
  3. * Created with IntelliJ IDEA.
  4. *
  5. * @author : cunyu
  6. * @version : 1.0
  7. * @email : 747731461@qq.com
  8. * @website : https://cunyu1943.github.io
  9. * @date : 2021/6/7 15:29
  10. * @project : Java 编程实例
  11. * @package : PACKAGE_NAME
  12. * @className : Example49
  13. * @description :
  14. */
  15. public class Example49 {
  16. public static void main(String[] args) {
  17. Scanner scan = new Scanner(System.in);
  18. System.out.println("输入字符串");
  19. String str = scan.nextLine();
  20. System.out.println("输入子字符串");
  21. String subStr = scan.nextLine();
  22. // 计数
  23. int count = 0;
  24. if (str.equals("") || subStr.equals("")) {
  25. System.out.println("无输入字符串或子串,无法比较");
  26. System.exit(0);
  27. } else {
  28. // 对比字符串中出现子字符串,统计次数
  29. for (int i = 0; i < str.length() - subStr.length(); i++) {
  30. if (subStr.equals(str.substring(i, subStr.length() + i))) {
  31. count++;
  32. }
  33. }
  34. }
  35. System.out.println("子串在字符串中出现 " + count + " 次!");
  36. }
  37. }

结果

那些年,我们一起做过的 Java 课后练习题(46 - 50) - 图4

实例 50

题目

有五个学生,每个学生有 3 门课程成绩,从键盘上输入数据(学号、姓名、三门课程成绩),计算出平均成绩,并把原有数据和计算出的平均分数存放于磁盘中。

分析

分析题目,将功能逐一拆分,先是要定义一个二维数组来存放五个学生的 6 个信息,然后分别输入五个学生的前 5 个信息,接着计算平均成绩,最后则是写入磁盘,值得注意的是,在读写文件时要注意流的关闭。

实现

  1. import java.io.BufferedWriter;
  2. import java.io.File;
  3. import java.io.FileWriter;
  4. import java.io.IOException;
  5. import java.util.Scanner;
  6. /**
  7. * Created with IntelliJ IDEA.
  8. *
  9. * @author : cunyu
  10. * @version : 1.0
  11. * @email : 747731461@qq.com
  12. * @website : https://cunyu1943.github.io
  13. * @date : 2021/6/7 15:29
  14. * @project : Java 编程实例
  15. * @package : PACKAGE_NAME
  16. * @className : Example50
  17. * @description :
  18. */
  19. public class Example50 {
  20. public static void main(String[] args) {
  21. Scanner scanner = new Scanner(System.in);
  22. // 存放 5 个学生的信息
  23. String[][] info = new String[5][6];
  24. for (int i = 0; i < info.length; i++) {
  25. System.out.println("输入第 " + (i + 1) + " 个学生的学号");
  26. info[i][0] = scanner.next();
  27. System.out.println("输入第 " + (i + 1) + " 个学生的姓名");
  28. info[i][1] = scanner.next();
  29. for (int j = 0; j < 3; j++) {
  30. System.out.println("输入第 " + (i + 1) + " 学生的第 " + (j + 1) + " 个成绩");
  31. info[i][j + 2] = scanner.next();
  32. }
  33. }
  34. // 求平均分,并存入数组
  35. float avg = 0.0f;
  36. int sum = 0;
  37. for (int i = 0; i < 5; i++) {
  38. {
  39. sum = 0;
  40. for (int j = 2; j < 5; j++) {
  41. sum += Integer.parseInt(info[i][j]);
  42. }
  43. avg = (float) sum / 3;
  44. info[i][5] = String.valueOf(avg);
  45. }
  46. }
  47. // 写入磁盘
  48. String line = null;
  49. File file = new File("./student.txt");
  50. if (file.exists()) {
  51. System.out.println("文件已存在");
  52. } else {
  53. try {
  54. file.createNewFile();
  55. } catch (IOException e) {
  56. e.printStackTrace();
  57. }
  58. }
  59. try (BufferedWriter output = new BufferedWriter(new FileWriter(file))) {
  60. for (int i = 0; i < 5; i++) {
  61. for (int j = 0; j < 6; j++) {
  62. line = info[i][j] + "\t";
  63. output.write(line);
  64. }
  65. output.write("\n");
  66. }
  67. } catch (IOException e) {
  68. e.printStackTrace();
  69. }
  70. System.out.println("数据已写入~");
  71. }
  72. }

结果

那些年,我们一起做过的 Java 课后练习题(46 - 50) - 图5

那些年,我们一起做过的 Java 课后练习题(46 - 50) - 图6