当前位置:  首页>> 技术小册>> Java语言基础4-数组详解

8.1 练习1

  • 键盘录入 5 个学生的成绩,求总和以及平均成绩,并显示每一个学生的成绩。

  • 示例:

  1. import java.util.Scanner;
  2. /**
  3. * 键盘录入5个学生的成绩,求总和以及平均成绩,并显示每一个学生的成绩。
  4. *
  5. * @author maxiaoke.com
  6. * @version 1.0
  7. */
  8. public class ArrayExercise1 {
  9. public static void main(String[] args) {
  10. Scanner input = new Scanner(System.in);
  11. // 定义数组
  12. double[] scores = new double[5];
  13. // 向数组中添加分数
  14. for (int i = 0; i < scores.length; i++) {
  15. System.out.print("请输入第" + (i + 1) + "个学生的成绩:");
  16. scores[i] = input.nextDouble();
  17. }
  18. // 求总和以及平均分
  19. double total = 0;
  20. for (int i = 0; i < scores.length; i++) {
  21. total += scores[i];
  22. }
  23. System.out.println("学生成绩的总和是:" + total);
  24. System.out.println("学生成绩的平均分是:" + (total / scores.length));
  25. // 显示每一个学生的成绩
  26. for (int i = 0; i < scores.length; i++) {
  27. System.out.println("第" + (i + 1) + "个学生的成绩:" + scores[i]);
  28. }
  29. }
  30. }

8.2 练习2

  • 分析以下需求,并用代码实现:
  • ① 在编程竞赛中,有 10 位评委为参赛的选手打分,分数分别为:5 ,4 ,6 ,8 ,9 ,0 ,1 ,2 ,7 ,3。
  • ② 求选手的最后得分(去掉一个最高分和一个最低分后其余 8 位评委打分的平均值)

  • 示例:

  1. /**
  2. * 分析以下需求,并用代码实现:
  3. * ①在编程竞赛中,有10位评委为参赛的选手打分,分数分别为:5468901273
  4. * ②求选手的最后得分(去掉一个最高分和一个最低分后其余8位评委打分的平均值)。
  5. *
  6. * @author maxiaoke.com
  7. * @version 1.0
  8. */
  9. public class ArrayExercise2 {
  10. public static void main(String[] args) {
  11. // 创建数组对象用来保存评委打分成绩
  12. int[] scores = {5, 4, 6, 8, 9, 0, 1, 2, 7, 3};
  13. // 遍历数组,求最高分和最低分
  14. int max = scores[0];
  15. int min = scores[0];
  16. for (int i = 0; i < scores.length; i++) {
  17. int score = scores[i];
  18. if (score >= max) {
  19. max = score;
  20. }
  21. if (score <= min) {
  22. min = score;
  23. }
  24. }
  25. // 遍历数组,遇到最高分和最低分跳过
  26. int total = 0;
  27. for (int i = 0; i < scores.length; i++) {
  28. int score = scores[i];
  29. /* 如果遇到最高分或最低分直接跳过累加,那么就会将所有的最高分跳过,极限情况下,如果打分都是最高分,那么所有的分数都会跳过,最终的平均分为0。这是错误的。
  30. if (score == max || score == min) {
  31. continue;
  32. }
  33. */
  34. total += score;
  35. }
  36. // 根据评分规则,最高分和最低分只去掉一个
  37. total -= max;
  38. total -= min;
  39. // 平均分
  40. double avg = (double) total / (scores.length - 2);
  41. System.out.println("选手的最后得分:" + avg);
  42. }
  43. }

8.3 练习3

  • 已知:一年 12 个月每个月的总天数是:{ 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 },从键盘输入年,月,日后,计算这一天是这一年的第几天。
  • 提示:考虑闰年。

  • 示例:

  1. import java.util.Scanner;
  2. /**
  3. * 已知:一年12个月每个月的总天数是:{ 31,28,31,30,31,30,31,31,30,31,30,31},从键盘输入年,月,日后,计算这一天是这一年的第几天。
  4. * 提示:考虑闰年。
  5. *
  6. * @author maxiaoke.com
  7. * @version 1.0
  8. */
  9. public class ArrayExercise3 {
  10. public static void main(String[] args) {
  11. // 创建数组并保存每个月的天数
  12. int[] dayOfMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  13. // 创建Scanner对象
  14. Scanner input = new Scanner(System.in);
  15. System.out.print("请输入年份(四位数):");
  16. int year = input.nextInt();
  17. System.out.print("请输入月份(1~12):");
  18. int month = input.nextInt();
  19. System.out.print("请输入天(1~31):");
  20. int day = input.nextInt();
  21. // 声明一个变量用来保存天数累加的结果
  22. int sum = 0;
  23. /*
  24. 在计算天数总和的时,分为两部分考虑:
  25. 已经经过的整月(如果用户指定的是1月,那么前面没有经过的整月)。
  26. 用户指定的当前月。
  27. */
  28. /* 通过循环计算①,假设用户输入的月份是2,那么经过的整月是1 */
  29. for (int i = 0; i < month - 1; i++) {
  30. sum += dayOfMonth[i];
  31. }
  32. /* 计算② */
  33. // 当前月的总天数
  34. int days = dayOfMonth[month - 1];
  35. /*
  36. * 如果用户输入的是228之前的天数(包括28号),则不需要考虑闰年
  37. */
  38. // 如果用户输入的天数 > 当前月的总天数,就按照当前月的总天数计算
  39. if (month == 1 || (month == 2 && day <= 28)) {
  40. sum += Math.min(day, days);
  41. } else {
  42. /*
  43. * 判断闰年
  44. * ①若某个年份能被4整除但不能被100整除,则是闰年。
  45. * ②若某个年份能被400整除,则也是闰年。
  46. */
  47. if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
  48. sum++;
  49. }
  50. }
  51. System.out.println("sum = " + sum);
  52. }
  53. }

8.4 练习4

  • 用一个数组,保存星期一到星期天的7个英语单词,从键盘输入 1-7,显示对应的单词。

  1. import java.util.Scanner;
  2. /**
  3. * @author maxiaoke.com
  4. * @version 1.0
  5. */
  6. public class ArrayExercise4 {
  7. public static void main(String[] args) {
  8. // 保存星期英文单词的数组
  9. String[] weeks = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
  10. // 创建Scanner对象
  11. Scanner input = new Scanner(System.in);
  12. System.out.print("请输入(1~7):");
  13. int week = input.nextInt();
  14. System.out.println(weeks[week - 1]);
  15. }
  16. }

8.5 练习5

  • 用一个数组存储 26 个英文字母的小写形式,并遍历显示小写字母以及它对应的大写字母,例如:a -> A 。

  • 示例:

  1. /**
  2. * 用一个数组存储26个英文字母的小写形式,并遍历显示小写字母以及它对应的大写字母,例如:a->A
  3. *
  4. * @author maxiaoke.com
  5. * @version 1.0
  6. */
  7. public class ArrayExercise5 {
  8. public static void main(String[] args) {
  9. // 创建一个保存26个英文字母的小写形式的数组
  10. char[] chs = new char[26];
  11. // 数组遍历,将26个英文字母的小写保存到数组中
  12. for (int i = 0; i < 26; i++) {
  13. chs[i] = (char) (97 + i);
  14. }
  15. // 数组遍历,显示小写字母以及它对应的大写字母
  16. for (int i = 0; i < chs.length; i++) {
  17. System.out.println(chs[i] + "->" + (char) (chs[i] - 32));
  18. }
  19. }
  20. }

8.6 练习6
从键盘输入本组学员人数。
声明两个数组,一个存储本组学员的姓名,一个存储本组学员的成绩。
从键盘输入每一个人的姓名和成绩,分别存到两个数组中。
找出最高分和最低分的学员的姓名。
示例:

  1. import java.util.Scanner;
  2. /**
  3. * 从键盘输入本组学员人数。
  4. * <p>
  5. * 声明两个数组,一个存储本组学员的姓名,一个存储本组学员的成绩。
  6. * <p>
  7. * 从键盘输入每一个人的姓名和成绩,分别存到两个数组中。
  8. * <p>
  9. * 找出最高分和最低分的学员的姓名。
  10. *
  11. * @author maxiaoke.com
  12. * @version 1.0
  13. */
  14. public class ArrayExercise6 {
  15. public static void main(String[] args) {
  16. // 从键盘输入本组学员人数
  17. Scanner input = new Scanner(System.in);
  18. System.out.print("请输入学员的人数:");
  19. int num = input.nextInt();
  20. // 声明两个数组,一个存储本组学员的姓名,一个存储本组学员的成绩。
  21. String[] names = new String[num];
  22. double[] scores = new double[num];
  23. // 从键盘输入每一个人的姓名和成绩,分别存到两个数组中。
  24. for (int i = 0; i < num; i++) {
  25. System.out.print("请输入第" + (i + 1) + "个学员的姓名:");
  26. String name = input.next();
  27. names[i] = name;
  28. System.out.print("请输入第" + (i + 1) + "个学员的成绩:");
  29. double score = input.nextDouble();
  30. scores[i] = score;
  31. }
  32. // 找出最高分和最低分的学员的姓名
  33. double maxScore = scores[0];
  34. int maxScoreIndex = 0;
  35. double minScore = scores[0];
  36. int minScoreIndex = 0;
  37. for (int i = 0; i < scores.length; i++) {
  38. double score = scores[i];
  39. if (score >= maxScore) {
  40. maxScore = score;
  41. maxScoreIndex = i;
  42. }
  43. if (score <= minScore) {
  44. minScore = score;
  45. minScoreIndex = i;
  46. }
  47. }
  48. System.out.println("最高分是:" + maxScore);
  49. System.out.println("最高分的学员的名称是:" + names[maxScoreIndex]);
  50. System.out.println("最低分是:" + minScore);
  51. System.out.println("最低分的学员的名称是:" + names[minScoreIndex]);
  52. }
  53. }

该分类下的相关小册推荐: