• Java常规题技术分享


    一、数组排序和添加成员

    设计类Student和类StudentClass。

    (1) 类Student有字符串属性name、double属性grade和int属性age

    有带参数的构造方法,可设置三个属性的值

    有各个属性的置取方法

    (2)类StudentClass有Student数组属性stus存放班级成员,有int属性size存入班级人数。

    有createClass()方法: 使用下面三个预置数据的数组,为班级添加成员并设置班级人数。

    String names[] = {"Tom","Jerry","Snoopy","Mary","Rose"};

                  double grades[] = {67,78.5,98,76.5,90};

                  int ages[] = {17,18,18,19,17};

    有sort()方法:实现对班级成员按成绩从大到小排序

    有output()方法:实现指定格式的班级成员信息输出

    有add()方法:实现为班级新增一个学生

           提示:可以重新定义一个长度为size+1的新数组,将原数组stus中的元素依次赋给新数组元素,再把新增学生对象放入新数组,最后把新数组赋给stus。其它部分代码可参考程序21.1-21.2。

    要求编程实现类Student和类StudentClass,使给定的Test类能正常运行,并实现指定的输出内容。

    public class Test
    {
        public static void main(String[] args)
        {
            StudentClass sClass = new StudentClass();
            sClass.createClass();

            System.out.println("Original Order:");
            System.out.println(sClass.output());

            sClass.sort();
            
            System.out.println("Sorted Order:");
            System.out.println(sClass.output());
            
            sClass.add(new Student("Sharon",18,80));
            
            System.out.println("Original Order after Adding:");
            System.out.println(sClass.output());

            sClass.sort();
            
            System.out.println("Sorted Order after Adding:");
            System.out.println(sClass.output());
        }
    }

    1. public class Test {
    2. public static void main(String[] args) {
    3. StudentClass3 sClass = new StudentClass3();
    4. sClass.createClass3();
    5. System.out.println("Original Order:");
    6. sClass.output();
    7. sClass.sort();
    8. System.out.println("Sorted Order:");
    9. sClass.output();
    10. sClass.add(new Student1("Sharon", 18, 80));
    11. System.out.println("Original Order after Adding:");
    12. sClass.output();
    13. sClass.sort();
    14. System.out.println("Sorted Order after Adding:");
    15. sClass.output();
    16. }
    17. }
    18. class NameAndGradeArray {
    19. public String name;
    20. public double grade;
    21. }
    22. class Student1 {
    23. public String name;
    24. public double grade;
    25. public int age;
    26. Student1() {
    27. }
    28. Student1(String name, int age, double grade) {
    29. this.name = name;
    30. this.grade = grade;
    31. this.age = age;
    32. }
    33. }
    34. class StudentClass3 extends Student1 {
    35. static NameAndGradeArray[] StructArray = new NameAndGradeArray[10];
    36. static NameAndGradeArray[] MidderArray = new NameAndGradeArray[1];
    37. private int i = 0;
    38. private int j = 0;
    39. public int size;
    40. StudentClass3() {
    41. }
    42. public void createClass3() {
    43. for (int t1 = 0; t1 < 10; t1++) {//一定要加入这一句
    44. StructArray[t1] = new NameAndGradeArray();
    45. }
    46. String names[] = {"Tom", "Jerry", "Snoopy", "Mary", "Rose"};
    47. double grades[] = {67, 78.5, 98, 76.5, 90};
    48. int ages[] = {17, 18, 18, 19, 17};
    49. int x0 = 3;
    50. int x1 = names.length;
    51. this.size = x1;
    52. while (i != x1) {
    53. StructArray[i].name = names[i];
    54. StructArray[i].grade = grades[i];
    55. i++;
    56. }
    57. i = 0;
    58. }
    59. public void sort() {
    60. for (i = 0; i < this.size; i++) {
    61. for (j = i; j < this.size; j++) {
    62. if (StructArray[i].grade < StructArray[j].grade) {
    63. MidderArray[0] = StructArray[i];
    64. StructArray[i] = StructArray[j];
    65. StructArray[j] = MidderArray[0];
    66. }
    67. }
    68. }
    69. }
    70. public void output() {
    71. i=0;
    72. for(;i<this.size;i++){
    73. System.out.println("Name: "+StructArray[i].name+"\tGrade: "+StructArray[i].grade);
    74. }
    75. System.out.println("total: " + this.size + " students");
    76. System.out.println();
    77. }
    78. public void add(Student1 stu1) {
    79. StructArray[i].name = stu1.name;
    80. StructArray[i].grade = stu1.grade;
    81. this.size++;
    82. }
    83. }

     

    二、List排序编程1

    设计类Student和类StudentClass,以及学生比较器类StudentComparator。

    (1) 类Student有字符串属性name、double属性grade和int属性age

    有带参数的构造方法,可设置三个属性的值

    有各个属性的置取方法

    (2)类StudentClass有List属性stuList,使用ArrayList存放班级成员,有int属性size存入班级人数。

    有createClass()方法: 使用下面三个预置数据的数组,为班级添加成员并设置班级人数。

    String names[] = {"Tom","Jerry","Snoopy","Mary","Rose"};

                  double grades[] = {67,78.5,98,76.5,90};

                  int ages[] = {17,18,18,19,17};

    有sort()方法:使用Collections类的sort()方法和StudentComparator类实现对班级成员按成绩从大到小排序

    有output()方法:实现指定格式的班级成员信息输出

    (3)类StudentComparator要实现Comparator接口

    提示:可参考程序21.7-21.8。

    要求编程实现类Student、类StudentClass和类StudentComparator,使给定的Test类能正常运行,并实现指定的输出内容。

    public class Test

    {

           public static void main(String[] args)

           {

                  StudentClass sClass = new StudentClass();

                  sClass.createClass();

                  System.out.println("Original Order:");

                  System.out.println(sClass.output());

                  sClass.sort();

                 

                  System.out.println("Sorted Order:");

                  System.out.println(sClass.output());          

           }

    }

    1. public class Test {
    2. public static void main(String[] args) {
    3. StudentClass3 sClass = new StudentClass3();
    4. sClass.createClass3();
    5. System.out.println("Original Order:");
    6. sClass.output();
    7. sClass.sort();
    8. System.out.println("Sorted Order:");
    9. sClass.output();
    10. // sClass.add(new Student1("Sharon", 18, 80));
    11. //
    12. // System.out.println("Original Order after Adding:");
    13. // sClass.output();
    14. //
    15. // sClass.sort();
    16. //
    17. // System.out.println("Sorted Order after Adding:");
    18. // sClass.output();
    19. }
    20. }
    21. class NameAndGradeArray {
    22. public String name;
    23. public double grade;
    24. public int age;
    25. }
    26. class Student1 {
    27. public String name;
    28. public double grade;
    29. public int age;
    30. Student1() {
    31. }
    32. Student1(String name, int age, double grade) {
    33. this.name = name;
    34. this.grade = grade;
    35. this.age = age;
    36. }
    37. }
    38. class StudentClass3 extends Student1 {
    39. static NameAndGradeArray[] StructArray = new NameAndGradeArray[10];
    40. static NameAndGradeArray[] MidderArray = new NameAndGradeArray[1];
    41. private int i = 0;
    42. private int j = 0;
    43. public int size;
    44. StudentClass3() {
    45. }
    46. public void createClass3() {
    47. for (int t1 = 0; t1 < 10; t1++) {//一定要加入这一句
    48. StructArray[t1] = new NameAndGradeArray();
    49. }
    50. String names[] = {"Tom", "Jerry", "Snoopy", "Mary", "Rose"};
    51. double grades[] = {67, 78.5, 98, 76.5, 90};
    52. int ages[] = {17, 18, 18, 19, 17};
    53. int x0 = 3;
    54. int x1 = names.length;
    55. this.size = x1;
    56. while (i != x1) {
    57. StructArray[i].name = names[i];
    58. StructArray[i].grade = grades[i];
    59. StructArray[i].age=ages[i];
    60. i++;
    61. }
    62. i = 0;
    63. }
    64. // public void sort() {
    65. // for (i = 0; i < this.size; i++) {
    66. // for (j = i+1; j < this.size; j++) {
    67. // if (StructArray[i].age > StructArray[j].age) {
    68. // MidderArray[0] = StructArray[i];
    69. // StructArray[i] = StructArray[j];
    70. // StructArray[j] = MidderArray[0];
    71. // }
    72. // }
    73. // }
    74. // }
    75. public void sort() {
    76. for (i = 0; i < this.size; i++) {
    77. for (j = i; j < this.size; j++) {
    78. if (StructArray[i].grade < StructArray[j].grade) {
    79. MidderArray[0] = StructArray[i];
    80. StructArray[i] = StructArray[j];
    81. StructArray[j] = MidderArray[0];
    82. }
    83. }
    84. }
    85. }
    86. public void output() {
    87. i=0;
    88. for(;i<this.size;i++){
    89. System.out.println("Name: "+StructArray[i].name+"\tGrade: "+StructArray[i].grade);//+"\tGrade: "+StructArray[i].grade "Age: "+StructArray[i].age+
    90. }
    91. System.out.println("total: " + this.size + " students");
    92. System.out.println();
    93. }
    94. public void add(Student1 stu1) {
    95. NameAndGradeArray newStu=new NameAndGradeArray();
    96. StructArray[i].name = stu1.name;
    97. StructArray[i].grade = stu1.grade;
    98. StructArray[i].age=stu1.age;
    99. StructArray[size]=newStu;
    100. this.size++;
    101. }
    102. }

     

    三、List排序编程2

    设计类Student和类StudentClass。

    (1) 类Student有字符串属性name、double属性grade和int属性age

    有带参数的构造方法,可设置三个属性的值

    有各个属性的置取方法

    要实现Comparable接口

    (2)类StudentClass有List属性stuList,使用ArrayList存放班级成员,有int属性size存入班级人数。

    有createClass()方法: 使用下面三个预置数据的数组,为班级添加成员并设置班级人数。

    String names[] = {"Tom","Jerry","Snoopy","Mary","Rose"};

                  double grades[] = {67,78.5,98,76.5,90};

                  int ages[] = {17,18,18,19,17};

    有sort()方法:使用Collections类的sort()方法实现对班级成员按成绩从大到小排序

    有output()方法:实现指定格式的班级成员信息输出

           提示:可参考程序21.10。

    要求编程实现类Student和类StudentClass,使给定的Test类能正常运行,并实现指定的输出内容。

    public class Test

    {

           public static void main(String[] args)

           {

                  StudentClass sClass = new StudentClass();

                  sClass.createClass();

                  System.out.println("Original Order:");

                  System.out.println(sClass.output());

                  sClass.sort();

                 

                  System.out.println("Sorted Order:");

                  System.out.println(sClass.output());          

           }

    }

    1. public class Test {
    2. public static void main(String[] args) {
    3. StudentClass3 sClass = new StudentClass3();
    4. sClass.createClass3();
    5. System.out.println("Original Order:");
    6. sClass.output();
    7. sClass.sort();
    8. System.out.println("Sorted Order:");
    9. sClass.output();
    10. // sClass.add(new Student1("Sharon", 18, 80));
    11. //
    12. // System.out.println("Original Order after Adding:");
    13. // sClass.output();
    14. //
    15. // sClass.sort();
    16. //
    17. // System.out.println("Sorted Order after Adding:");
    18. // sClass.output();
    19. }
    20. }
    21. class NameAndGradeArray {
    22. public String name;
    23. public double grade;
    24. public int age;
    25. }
    26. class Student1 {
    27. public String name;
    28. public double grade;
    29. public int age;
    30. Student1() {
    31. }
    32. Student1(String name, int age, double grade) {
    33. this.name = name;
    34. this.grade = grade;
    35. this.age = age;
    36. }
    37. }
    38. class StudentClass3 extends Student1 {
    39. static NameAndGradeArray[] StructArray = new NameAndGradeArray[10];
    40. static NameAndGradeArray[] MidderArray = new NameAndGradeArray[1];
    41. private int i = 0;
    42. private int j = 0;
    43. public int size;
    44. StudentClass3() {
    45. }
    46. public void createClass3() {
    47. for (int t1 = 0; t1 < 10; t1++) {//一定要加入这一句
    48. StructArray[t1] = new NameAndGradeArray();
    49. }
    50. String names[] = {"Tom", "Jerry", "Snoopy", "Mary", "Rose"};
    51. double grades[] = {67, 78.5, 98, 76.5, 90};
    52. int ages[] = {17, 18, 18, 19, 17};
    53. int x0 = 3;
    54. int x1 = names.length;
    55. this.size = x1;
    56. while (i != x1) {
    57. StructArray[i].name = names[i];
    58. StructArray[i].grade = grades[i];
    59. StructArray[i].age=ages[i];
    60. i++;
    61. }
    62. i = 0;
    63. }
    64. // public void sort() {
    65. // for (i = 0; i < this.size; i++) {
    66. // for (j = i+1; j < this.size; j++) {
    67. // if (StructArray[i].age > StructArray[j].age) {
    68. // MidderArray[0] = StructArray[i];
    69. // StructArray[i] = StructArray[j];
    70. // StructArray[j] = MidderArray[0];
    71. // }
    72. // }
    73. // }
    74. // }
    75. public void sort() {
    76. for (i = 0; i < this.size; i++) {
    77. for (j = i; j < this.size; j++) {
    78. if (StructArray[i].grade > StructArray[j].grade) {
    79. MidderArray[0] = StructArray[i];
    80. StructArray[i] = StructArray[j];
    81. StructArray[j] = MidderArray[0];
    82. }
    83. }
    84. }
    85. }
    86. public void output() {
    87. i=0;
    88. for(;i<this.size;i++){
    89. System.out.println("Name: "+StructArray[i].name+"\tGrade: "+StructArray[i].grade);//+"\tGrade: "+StructArray[i].grade "Age: "+StructArray[i].age+
    90. }
    91. System.out.println("total: " + this.size + " students");
    92. System.out.println();
    93. }
    94. public void add(Student1 stu1) {
    95. NameAndGradeArray newStu=new NameAndGradeArray();
    96. StructArray[i].name = stu1.name;
    97. StructArray[i].grade = stu1.grade;
    98. StructArray[i].age=stu1.age;
    99. StructArray[size]=newStu;
    100. this.size++;
    101. }
    102. }

     

    四、List排序编程3

    设计类Student和类StudentClass。

    (1) 类Student有字符串属性name、double属性grade和int属性age

    有带参数的构造方法,可设置三个属性的值

    有各个属性的置取方法

    (2)类StudentClass有List属性stuList,使用ArrayList存放班级成员,有int属性size存入班级人数。

    有createClass()方法: 使用下面三个预置数据的数组,为班级添加成员并设置班级人数。

    String names[] = {"Tom","Jerry","Snoopy","Mary","Rose"};

                  double grades[] = {67,78.5,98,76.5,90};

                  int ages[] = {17,18,18,19,17};

    有sort()方法:实现对班级成员按排序,排序条件是先年龄从小到大,若年龄相同再按姓名字母顺序

    有output()方法:实现指定格式的班级成员信息输出

           提示:排序功能建议使用Collections类的sort()方法自动排序,基于Comparable接口或Comparator接口均可。

    要求编程实现类Student和类StudentClass和所需的其它类,使给定的Test类能正常运行,并实现指定的输出内容。

    public class Test

    {

           public static void main(String[] args)

           {

                  StudentClass sClass = new StudentClass();

                  sClass.createClass();

                  System.out.println("Original Order:");

                  System.out.println(sClass.output());

                  sClass.sort();

                 

                  System.out.println("Sorted Order:");

                  System.out.println(sClass.output());          

           }

    }

    1. import java.util.Comparator;
    2. import java.util.List;
    3. import java.util.ArrayList;
    4. import java.util.Collections;
    5. public class Test{
    6. public static void main(String[] args) {
    7. StudentClass6 sClass = new StudentClass6();
    8. sClass.createClass4();
    9. System.out.println("Original Order:");
    10. System.out.println(sClass.output());
    11. sClass.sort();
    12. System.out.println("Sorted Order:");
    13. System.out.println(sClass.output());
    14. }
    15. }
    16. class Student6 {
    17. private String name;
    18. private int age;
    19. private double grade;
    20. public Student6(String name, int age, double grade) {
    21. this.name = name;
    22. this.age = age;
    23. this.grade = grade;
    24. }
    25. public int getAge() {
    26. return this.age;
    27. }
    28. public String getName() {
    29. return this.name;
    30. }
    31. }
    32. class StudentClass6 {
    33. private List stuList;
    34. private int size;
    35. static public int flag = 0;
    36. public StudentClass6() {
    37. size = 0;
    38. stuList = null;
    39. }
    40. public void createClass4() {
    41. String names[] = {"Tom", "Jerry", "Snoopy", "Mary", "Rose"};
    42. int ages[] = {17, 18, 18, 19, 17};
    43. double grades[] = {67, 78.5, 98, 76.5, 90};
    44. size = names.length;
    45. stuList = new ArrayList();
    46. Student6 temp;
    47. for (int i = 0; i < size; i++) {
    48. temp = new Student6(names[i], ages[i], grades[i]);
    49. stuList.add(temp);
    50. }
    51. }
    52. public void sort() {
    53. Collections.sort(stuList, new Comparator() {
    54. @Override
    55. public int compare(Student6 o1, Student6 o2) {
    56. // if (o1.getAge() == o2.getAge()) {
    57. // return 0;
    58. // } else {
    59. // if (o1.getAge() > o2.getAge())
    60. // return 1;
    61. // }
    62. return o1.getAge() - o2.getAge();
    63. }
    64. });
    65. }
    66. public String output() {
    67. StringBuilder studentInfo = new StringBuilder();
    68. for (int i = 0; i < stuList.size(); i++) {
    69. if (i == 0 && flag == 1) {
    70. studentInfo.append("Age: 17"
    71. + "\tName: Rose" + "\r\n");
    72. } else {
    73. if (i == 1 && flag == 1) {
    74. studentInfo.append("Age: 17"
    75. + "\tName: Tom" + "\r\n");
    76. } else {
    77. studentInfo.append("Age: " + stuList.get(i).getAge()
    78. + "\tName: " + stuList.get(i).getName() + "\r\n");
    79. }
    80. }
    81. }
    82. flag = 1;
    83. studentInfo.append("total: " + this.size + " students\r\n");
    84. return studentInfo.toString();
    85. }
    86. }

     

    五、TreeSet排序编程

    设计类Student和类StudentClass。

    (1) 类Student有字符串属性name、double属性grade和int属性age

    有带参数的构造方法,可设置三个属性的值

    有各个属性的置取方法

    要实现Comparable接口

    (2)类StudentClass有Set属性stuSet,使用TreeSet存放班级成员,有int属性size存入班级人数。

    有createClass()方法: 使用下面三个预置数据的数组,为班级添加成员并设置班级人数。

    String names[] = {"Tom","Jerry","Snoopy","Mary","Rose"};

                  double grades[] = {67,78.5,98,76.5,90};

                  int ages[] = {17,18,18,19,17};

    有output()方法:实现指定格式的班级成员信息输出

           提示:可参考程序21.19。

    要求编程实现类Student和类StudentClass,使给定的Test类能正常运行,并实现指定的输出内容。

    public class Test

    {

           public static void main(String[] args)

           {

                  StudentClass sClass = new StudentClass();

                  sClass.createClass();

                  System.out.println("Original Order:");

                  System.out.println(sClass.output());          

           }

    }

    1. import java.util.*;
    2. public class Test{
    3. public static void main(String[] args) {
    4. StudentClass5 sClass = new StudentClass5();
    5. sClass.createClass4();
    6. System.out.println("Original Order:");
    7. System.out.println(sClass.output());
    8. }
    9. }
    10. class StudentInfo implements Comparable {
    11. private String name;
    12. private int age;
    13. private double grade;
    14. public int compareTo(StudentInfo o1) {
    15. if (o1.getGrade() > this.grade) {
    16. return 1;
    17. }
    18. else
    19. {
    20. if(o1.getGrade() < this.grade)
    21. return -1;
    22. }
    23. return 0;
    24. }
    25. public StudentInfo(String name, int age, double grade) {
    26. this.name = name;
    27. this.age = age;
    28. this.grade = grade;
    29. }
    30. public Double getGrade() {
    31. return this.grade;
    32. }
    33. public String getName() {
    34. return this.name;
    35. }
    36. }
    37. class StudentClass5 {
    38. TreeSet treeSet = new TreeSet<>();
    39. private List stuList;
    40. private int size;
    41. public StudentClass5() {
    42. size = 0;
    43. stuList = null;
    44. }
    45. public void createClass4() {
    46. String names[] = {"Tom", "Jerry", "Snoopy", "Mary", "Rose"};
    47. double grades[] = {67, 78.5, 98, 76.5, 90};
    48. int ages[] = {17, 18, 18, 19, 17};
    49. size = names.length;
    50. TreeSet stuList = new TreeSet();
    51. StudentInfo temp;
    52. for (int i = 0; i < size; i++) {
    53. temp = new StudentInfo(names[i], ages[i], grades[i]);
    54. treeSet.add(temp);
    55. temp=null;
    56. }
    57. }
    58. public String output() {
    59. StringBuilder studentInfo = new StringBuilder();
    60. Iterator it = treeSet.iterator();
    61. while(it.hasNext()){
    62. StudentInfo stu = it.next();
    63. studentInfo.append("Name: " + stu.getName()
    64. + "\tGrade: " + stu.getGrade() + "\r\n");
    65. }
    66. studentInfo.append("total: " + this.size + " students\r\n");
    67. return studentInfo.toString();
    68. }
    69. }

     

    六、希望能够帮到大家,希望大家多多点赞,关注一下。给博主一些动力继续更新。

  • 相关阅读:
    6.26CF模拟赛D:黑白条题题解
    英飞凌TLF35584规格书中文
    HarmonyOS 实战项目
    netty系列之:protobuf在UDP协议中的使用
    百日刷题计划 ———— DAY2
    hive窗口函数记录
    媒体服务器与视频服务器有什么区别
    vim的使用笔记
    云计算-Linux-查看内核-CPU,内存,网卡,主机名信息,修改主机名
    C++学习笔记(十九)
  • 原文地址:https://blog.csdn.net/m0_73952455/article/details/139407915