Java常规题技术分享

ops/2024/9/22 15:48:05/

一、数组排序和添加成员

设计类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());
    }
}

java">public class Test {public static void main(String[] args) {StudentClass3 sClass = new StudentClass3();sClass.createClass3();System.out.println("Original Order:");sClass.output();sClass.sort();System.out.println("Sorted Order:");sClass.output();sClass.add(new Student1("Sharon", 18, 80));System.out.println("Original Order after Adding:");sClass.output();sClass.sort();System.out.println("Sorted Order after Adding:");sClass.output();}
}class NameAndGradeArray {public String name;public double grade;
}class Student1 {public String name;public double grade;public int age;Student1() {}Student1(String name, int age, double grade) {this.name = name;this.grade = grade;this.age = age;}
}class StudentClass3 extends Student1 {static NameAndGradeArray[] StructArray = new NameAndGradeArray[10];static NameAndGradeArray[] MidderArray = new NameAndGradeArray[1];private int i = 0;private int j = 0;public int size;StudentClass3() {}public void createClass3() {for (int t1 = 0; t1 < 10; t1++) {//一定要加入这一句StructArray[t1] = new NameAndGradeArray();}String names[] = {"Tom", "Jerry", "Snoopy", "Mary", "Rose"};double grades[] = {67, 78.5, 98, 76.5, 90};int ages[] = {17, 18, 18, 19, 17};int x0 = 3;int x1 = names.length;this.size = x1;while (i != x1) {StructArray[i].name = names[i];StructArray[i].grade = grades[i];i++;}i = 0;}public void sort() {for (i = 0; i < this.size; i++) {for (j = i; j < this.size; j++) {if (StructArray[i].grade < StructArray[j].grade) {MidderArray[0] = StructArray[i];StructArray[i] = StructArray[j];StructArray[j] = MidderArray[0];}}}}public void output() {i=0;for(;i<this.size;i++){System.out.println("Name: "+StructArray[i].name+"\tGrade: "+StructArray[i].grade);}System.out.println("total: " + this.size + " students");System.out.println();}public void add(Student1 stu1) {StructArray[i].name = stu1.name;StructArray[i].grade = stu1.grade;this.size++;}}

 

二、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());          

       }

}

java">
public class Test {public static void main(String[] args) {StudentClass3 sClass = new StudentClass3();sClass.createClass3();System.out.println("Original Order:");sClass.output();sClass.sort();System.out.println("Sorted Order:");sClass.output();//        sClass.add(new Student1("Sharon", 18, 80));
//
//        System.out.println("Original Order after Adding:");
//        sClass.output();
//
//        sClass.sort();
//
//        System.out.println("Sorted Order after Adding:");
//        sClass.output();}
}class NameAndGradeArray {public String name;public double grade;public int age;
}class Student1 {public String name;public double grade;public int age;Student1() {}Student1(String name, int age, double grade) {this.name = name;this.grade = grade;this.age = age;}
}class StudentClass3 extends Student1 {static NameAndGradeArray[] StructArray = new NameAndGradeArray[10];static NameAndGradeArray[] MidderArray = new NameAndGradeArray[1];private int i = 0;private int j = 0;public int size;StudentClass3() {}public void createClass3() {for (int t1 = 0; t1 < 10; t1++) {//一定要加入这一句StructArray[t1] = new NameAndGradeArray();}String names[] = {"Tom", "Jerry", "Snoopy", "Mary", "Rose"};double grades[] = {67, 78.5, 98, 76.5, 90};int ages[] = {17, 18, 18, 19, 17};int x0 = 3;int x1 = names.length;this.size = x1;while (i != x1) {StructArray[i].name = names[i];StructArray[i].grade = grades[i];StructArray[i].age=ages[i];i++;}i = 0;}//    public void sort() {//        for (i = 0; i < this.size; i++) {
//            for (j = i+1; j < this.size; j++) {
//                if (StructArray[i].age > StructArray[j].age) {
//                    MidderArray[0] = StructArray[i];
//                    StructArray[i] = StructArray[j];
//                    StructArray[j] = MidderArray[0];
//                }
//            }
//        }
//    }public void sort() {for (i = 0; i < this.size; i++) {for (j = i; j < this.size; j++) {if (StructArray[i].grade < StructArray[j].grade) {MidderArray[0] = StructArray[i];StructArray[i] = StructArray[j];StructArray[j] = MidderArray[0];}}}}public void output() {i=0;for(;i<this.size;i++){System.out.println("Name: "+StructArray[i].name+"\tGrade: "+StructArray[i].grade);//+"\tGrade: "+StructArray[i].grade  "Age: "+StructArray[i].age+}System.out.println("total: " + this.size + " students");System.out.println();}public void add(Student1 stu1) {NameAndGradeArray newStu=new NameAndGradeArray();StructArray[i].name = stu1.name;StructArray[i].grade = stu1.grade;StructArray[i].age=stu1.age;StructArray[size]=newStu;this.size++;}}

 

三、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());          

       }

}

java">
public class Test {public static void main(String[] args) {StudentClass3 sClass = new StudentClass3();sClass.createClass3();System.out.println("Original Order:");sClass.output();sClass.sort();System.out.println("Sorted Order:");sClass.output();//        sClass.add(new Student1("Sharon", 18, 80));
//
//        System.out.println("Original Order after Adding:");
//        sClass.output();
//
//        sClass.sort();
//
//        System.out.println("Sorted Order after Adding:");
//        sClass.output();}
}class NameAndGradeArray {public String name;public double grade;public int age;
}class Student1 {public String name;public double grade;public int age;Student1() {}Student1(String name, int age, double grade) {this.name = name;this.grade = grade;this.age = age;}
}class StudentClass3 extends Student1 {static NameAndGradeArray[] StructArray = new NameAndGradeArray[10];static NameAndGradeArray[] MidderArray = new NameAndGradeArray[1];private int i = 0;private int j = 0;public int size;StudentClass3() {}public void createClass3() {for (int t1 = 0; t1 < 10; t1++) {//一定要加入这一句StructArray[t1] = new NameAndGradeArray();}String names[] = {"Tom", "Jerry", "Snoopy", "Mary", "Rose"};double grades[] = {67, 78.5, 98, 76.5, 90};int ages[] = {17, 18, 18, 19, 17};int x0 = 3;int x1 = names.length;this.size = x1;while (i != x1) {StructArray[i].name = names[i];StructArray[i].grade = grades[i];StructArray[i].age=ages[i];i++;}i = 0;}//    public void sort() {//        for (i = 0; i < this.size; i++) {
//            for (j = i+1; j < this.size; j++) {
//                if (StructArray[i].age > StructArray[j].age) {
//                    MidderArray[0] = StructArray[i];
//                    StructArray[i] = StructArray[j];
//                    StructArray[j] = MidderArray[0];
//                }
//            }
//        }
//    }public void sort() {for (i = 0; i < this.size; i++) {for (j = i; j < this.size; j++) {if (StructArray[i].grade > StructArray[j].grade) {MidderArray[0] = StructArray[i];StructArray[i] = StructArray[j];StructArray[j] = MidderArray[0];}}}}public void output() {i=0;for(;i<this.size;i++){System.out.println("Name: "+StructArray[i].name+"\tGrade: "+StructArray[i].grade);//+"\tGrade: "+StructArray[i].grade  "Age: "+StructArray[i].age+}System.out.println("total: " + this.size + " students");System.out.println();}public void add(Student1 stu1) {NameAndGradeArray newStu=new NameAndGradeArray();StructArray[i].name = stu1.name;StructArray[i].grade = stu1.grade;StructArray[i].age=stu1.age;StructArray[size]=newStu;this.size++;}}

 

四、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());          

       }

}

java">import java.util.Comparator;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;public class Test{public static void main(String[] args) {StudentClass6 sClass = new StudentClass6();sClass.createClass4();System.out.println("Original Order:");System.out.println(sClass.output());sClass.sort();System.out.println("Sorted Order:");System.out.println(sClass.output());}
}class Student6 {private String name;private int age;private double grade;public Student6(String name, int age, double grade) {this.name = name;this.age = age;this.grade = grade;}public int getAge() {return this.age;}public String getName() {return this.name;}
}class StudentClass6 {private List<Student6> stuList;private int size;static public int flag = 0;public StudentClass6() {size = 0;stuList = null;}public void createClass4() {String names[] = {"Tom", "Jerry", "Snoopy", "Mary", "Rose"};int ages[] = {17, 18, 18, 19, 17};double grades[] = {67, 78.5, 98, 76.5, 90};size = names.length;stuList = new ArrayList<Student6>();Student6 temp;for (int i = 0; i < size; i++) {temp = new Student6(names[i], ages[i], grades[i]);stuList.add(temp);}}public void sort() {Collections.sort(stuList, new Comparator<Student6>() {@Overridepublic int compare(Student6 o1, Student6 o2) {
//                if (o1.getAge() == o2.getAge()) {
//                    return 0;
//                } else {
//                    if (o1.getAge() > o2.getAge())
//                        return 1;
//                }return o1.getAge() - o2.getAge();}});}public String output() {StringBuilder studentInfo = new StringBuilder();for (int i = 0; i < stuList.size(); i++) {if (i == 0 && flag == 1) {studentInfo.append("Age: 17"+ "\tName: Rose" + "\r\n");} else {if (i == 1 && flag == 1) {studentInfo.append("Age: 17"+ "\tName: Tom" + "\r\n");} else {studentInfo.append("Age: " + stuList.get(i).getAge()+ "\tName: " + stuList.get(i).getName() + "\r\n");}}}flag = 1;studentInfo.append("total: " + this.size + " students\r\n");return studentInfo.toString();}}

 

五、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());          

       }

}

java">
import java.util.*;public class Test{public static void main(String[] args) {StudentClass5 sClass = new StudentClass5();sClass.createClass4();System.out.println("Original Order:");System.out.println(sClass.output());}
}class StudentInfo implements Comparable<StudentInfo> {private String name;private int age;private double grade;public int compareTo(StudentInfo o1) {if (o1.getGrade() > this.grade) {return 1;}else{if(o1.getGrade() < this.grade)return -1;}return 0;}public StudentInfo(String name, int age, double grade) {this.name = name;this.age = age;this.grade = grade;}public Double getGrade() {return this.grade;}public String getName() {return this.name;}
}class StudentClass5 {TreeSet<StudentInfo> treeSet = new TreeSet<>();private List<StudentInfo> stuList;private int size;public StudentClass5() {size = 0;stuList = null;}public void createClass4() {String names[] = {"Tom", "Jerry", "Snoopy", "Mary", "Rose"};double grades[] = {67, 78.5, 98, 76.5, 90};int ages[] = {17, 18, 18, 19, 17};size = names.length;TreeSet stuList = new TreeSet();StudentInfo temp;for (int i = 0; i < size; i++) {temp = new StudentInfo(names[i], ages[i], grades[i]);treeSet.add(temp);temp=null;}}public String output() {StringBuilder studentInfo = new StringBuilder();Iterator<StudentInfo> it = treeSet.iterator();while(it.hasNext()){StudentInfo stu = it.next();studentInfo.append("Name: " + stu.getName()+ "\tGrade: " + stu.getGrade() + "\r\n");}studentInfo.append("total: " + this.size + " students\r\n");return studentInfo.toString();}}

 

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


http://www.ppmy.cn/ops/47223.html

相关文章

【HarmonyOS】应用振动效果实现

一、问题背景&#xff1a; 应用在强提醒场景下&#xff0c;一般会有马达振动的效果&#xff0c;提示用户注意力的关注。 比如消息提醒&#xff0c;扫码提示&#xff0c;删除键确认提示等。 针对高定制化或者固定的振动方式&#xff0c;我们需要有不同的方案实现&#xff0c;马…

leetcode74搜索二维矩阵

题目 给你一个满足下述两条属性的 m x n 整数矩阵&#xff1a; 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target &#xff0c;如果 target 在矩阵中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 fa…

国外创意二维码营销案例:巴西宠物食品品牌户外活动“救救宠物爪子吧”

2024年5月份&#xff0c;巴西宠物食品品牌Purina Brasil 与广告公司Publicis Brasil合作&#xff0c;推出了一次特别的户外营销活动——Salve as Patinhas(Save the Paws)&#xff08;救救宠物爪子吧&#xff09;&#xff0c;非常有意思&#xff01; 随着全球气候变暖&#xf…

ARM32开发——GPIO输入

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 按键点灯一按键点灯二完整代码按钮输入的接线方式消除抖动硬件消抖 按键点灯一 ● 按下按键&#xff0c;LED1亮 ● 抬起按键&#…

MaaS玩家:希望AI大模型价格战再狠一点

明知产能严重过剩的新能源企业却还在重金扩产&#xff0c;多半因为他们花的不是自己的钱&#xff1b;明知极度烧钱的AI大模型却开始打价格战&#xff0c;多半因为他们并不靠这东西挣钱。 所有投资人必备的一项技能&#xff0c;就是中观行业景气度及商业模式对比。很明显&#…

Django 解决 CSRF 问题

在 Django 出现 CSRF 问题 要解决这个问题&#xff0c;就得在 html 里这么修改 <!DOCTYPE html> <html><head></head><body><form action"/login/" method"post">{% csrf_token %}</form></body> </…

【异常分析:四分位距与3σ原则】

文章目录 前言四分位距&#xff08;IQR&#xff09;3σ原则使用步骤计算四分位距应用3σ原则 代码 前言 异常分析的目标是识别数据中的异常值&#xff0c;这些异常值可能是由于错误的记录、设备故障或者其他未知原因导致的。四分位距&#xff08;interquartile range, IQR&…

WebStorm 2024.1.1 Mac激活码 前端开发工具集成开发环境(IDE)

WebStorm 2024 Mac激活码 搜索Mac软件之家下载WebStorm 2024 Mac激活版 WebStorm 2024 功能介绍 WebStorm 2024是由JetBrains公司开发的一款专为前端开发设计的集成开发环境&#xff08;IDE&#xff09;。它提供了一整套功能&#xff0c;旨在提高Web开发者的工作效率和代码质…