-
设计一个类Student,该类包括姓名、学号和成绩。
2020-06-14 17:29:1210、设计一个类Student,该类包括姓名、学号和成绩。设计一个方法,按照成绩从高到低的顺序输出姓名、学号和成绩信息 算法分析: 1、定义一个类,包含私有属性 姓名 学号 成绩 2、实现构造函数和get()/set() 方法 3...题目:
10、设计一个类Student,该类包括姓名、学号和成绩。设计一个方法,按照成绩从高到低的顺序输出姓名、学号和成绩信息
算法分析:
1、定义一个类,包含私有属性 姓名 学号 成绩
2、实现构造函数和get()/set() 方法
3、定义一个排序方法sortStudent()
4、定义一个打印方法,在程序入口直接打印的话,不好实现
5、定义数组,存入数据,调用方法实现所有功能
代码实现:package Java_Object_oriented.Student; import java.util.Scanner; /*10、设计一个类Student,该类包括姓名、学号和成绩。设计一个方法,按照成绩从高到低的顺序输出姓名、学号和成绩信息*/ class Student { private String name; private int id; private int score; public Student() { } public Student(String name, int id, int score) { this.name = name; this.id = id; this.score = score; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } //排序 一般的排序格式都是这样 public static void sortStudent(Student[] s) { for (int i = 0; i < s.length - 1; i++) { for (int j = 0; j < s.length - 1 - i; j++) { if (s[j].score < s[j + 1].score) { Student temp = s[j]; s[j] = s[j + 1]; s[j + 1] = temp; } } } } //打印信息 public void show() { System.out.println(name + " " + id + " " + score); } } public class StudentDemo { public static void main(String[] args) { Student[] s = new Student[3]; s[0] = new Student("zc", 01, 99); s[1] = new Student("yf", 02, 88); s[2] = new Student("son", 03, 100); Student.sortStudent(s); //调用排序 // Student.sortStudent();Student.sortStudent[s];能写成这样,也是人才。 for (int i = 0; i < s.length; i++) {//这段代码有问题 // System.out.println(name + " " + id + " " + score);私有属性,不能直接访问 // System.out.println(s.setName("zc")+ " " + id + " " + score); } //增强for循环 调用show()方法 for (Student S : s) { S.show(); } } }
运行结果:
学习心得:
1、一般的排序格式都是用两个for循环实现的,比较常用。i是从0开始的,所以后面会有-1操作。
2、给动态数组中存入元素的格式也需要注意,定义的什么类型,就存入什么类型的数据。
3、在最后,对get/set方法的使用,出现了问题,下去了恶补一下。
-
扫描一个类所在目录下的所有类的类名[包括Jar和非jar]
2020-07-24 11:58:38* 扫描一个类所在目录下的所有类的类名 * * @param clazz 要扫描的基础类 * @param filter 过滤器 为空的时候不过滤 * @return 一个全路径类名的List */ public static List<String> scanAllClass.../** * 扫描一个类所在目录下的所有类的类名 * * @param clazz 要扫描的基础类 * @param filter 过滤器 为空的时候不过滤 * @return 一个全路径类名的List */ public static List<String> scanAllClass(Class clazz, int back, Function<String, Boolean> filter) { List<String> classes = new LinkedList<>(); try { URL url = clazz.getResource(""); StringBuilder sb = new StringBuilder(URLDecoder.decode(url.getPath(), "UTF-8")); //取父目录 0 或者null的时候是本级不用变 但是1的时候要+1 是因为要把最后一个/也去掉 int level = back == 0 ? 0 : 1 + back; for (int i = 0; i < level; i++) { int index = sb.lastIndexOf("/"); sb = sb.delete(index, sb.length()); } //补回最后一个/ if (level > 0) { sb.append("/"); } String decode = sb.toString(); System.out.println(decode); //判断是jar包还是文件夹 String[] split = decode.split("\\.jar!/"); if (split.length > 1) { //打开jar文件 JarURLConnection connection = (JarURLConnection) url.openConnection(); JarFile jarFile = connection.getJarFile(); Enumeration<JarEntry> jarEntries = jarFile.entries(); //遍历jar包下的所有文件 while (jarEntries.hasMoreElements()) { JarEntry jarEntry = jarEntries.nextElement(); String jarEntryName = jarEntry.getName(); //查找出类 if (jarEntryName.startsWith(split[split.length - 1]) && jarEntryName.endsWith(".class")) { String className = jarEntryName.replace("/", "."); //执行过滤器 if (filter != null && !filter.apply(className)) { continue; } classes.add(className.replaceAll(".class$", "")); } } } else { //todo mac 下测试效果 //计算出从包名开始往下的路径 //linux 下和windows下有所区别 windows下的decode 前面会加上一个 / 所以分隔符是\的时候 subNum要+1 String separator = System.getProperty("file.separator"); int subNum = "\\".equals(separator) ? 2 : 1; int bathLength = decode.length() - subNum - clazz.getPackage().getName().length(); //BFS Queue<File> queue = new LinkedList<>(); File file = new File(decode); queue.add(file); while (!queue.isEmpty()) { for (int i = 0; i < queue.size(); i++) { File poll = queue.poll(); String absolutePath = poll.getCanonicalPath(); if (absolutePath.endsWith(".class")) { String substring = absolutePath.substring(bathLength); String className = substring.replace(separator, "."); //执行过滤器 if (filter != null && !filter.apply(className)) { continue; } //将分割符切换成. classes.add(className.replaceAll(".class$", "")); } else { if (poll.canRead() && poll.isDirectory()) { File[] files = poll.listFiles(); //如果有子文件 入队 for (File f : files) { queue.add(f); } } } } } } } catch (Exception e) { throw new RuntimeException(e); } return classes; } public static void main(String[] args) { System.out.println(scanAllClass(DataMemoryApplication.class, null)); System.out.println(scanAllClass(org.springframework.cache.Cache.class, null)); //过滤内部类 System.out.println(scanAllClass(org.springframework.cache.Cache.class, s -> !s.contains("$"))); }
-
设计一个名为Rectangle的矩形类,这个类包括:两个名为width和height的double数据域。
2020-03-18 17:56:30设计一个名为Rectangle的矩形类,这个类包括:两个名为width和height的double数据域,它们分别表示矩形的宽和高。width和height的默认值都为1.该类包括矩形类的无参构造函数(默认构造函数);一个width和height为指定值...设计一个名为Rectangle的矩形类,这个类包括:两个名为width和height的double数据域,它们分别表示矩形的宽和高。width和height的默认值都为1.该类包括矩形类的无参构造函数(默认构造函数);一个width和height为指定值的矩形构造函数;一个名为getArea()的函数返回矩形的面积;一个名为getPerimeter()的函数返回矩形的周长。请实现这个类。编写一个测试程序,创建一个Rectangle对象,从键盘输入矩形的宽和高,然后输出矩形的面积和周长。
这个应该是很基础的题,考察点主要就是重载函数的运用,以及虚构函数的运用,,还有就是声名对象时要写清楚是声明的那个重载函数,即初始值。
代码如下:#include <iostream> using namespace std; class Rectangle { private: double width;//宽 double height;//高 public: Rectangle()//无参构造函数 { width=1; height=1; } Rectangle(double x,double y)//有参构造函数 { width=x; height=y; } double getArea()//得到面积 { double area; area=width*height; cout<<"面积为:"<<area<<endl; return area; } double getPerimeter()//得到周长 { double perimeter; perimeter=2*(width+height); cout<<"周长为:"<<perimeter<<endl; return perimeter; } }; int main() { double x,y; cout<<"请输入宽和高:"<<endl; cin>>x>>y; Rectangle r1(x,y);//这里声名对象时一定要选择好是默认参数还是自己定义的参数,这里是有参的声明 r1.getArea(); r1.getPerimeter(); Rectangle r2;//无参的声明 r2.getArea(); r2.getPerimeter(); return 0; }
可能有的地方表达不太清楚,大家只要能看懂代码理解即可。
-
Java课后题——(三角形类)设计一个名为triangle的类来扩展geometricobject类,该类包括
2019-05-24 20:36:17设计一个名为triangle的类来扩展geometricobject类,该类包括 三个名为side1,side2,side3的double数据域表示这个三角形的三条边 一个无参构造方法创建默认三角形 一个能创建带指定size的三角形构造方法 所有三个...设计一个名为triangle的类来扩展geometricobject类,该类包括
- 三个名为side1,side2,side3的double数据域表示这个三角形的三条边
- 一个无参构造方法创建默认三角形
- 一个能创建带指定size的三角形构造方法
- 所有三个数据域的访问器
- 是否填充
- 面积,周长,颜色
GeometricObject类如下:abstract class GeometricObject{ private boolean filled; private String color; private java.util.Date dateCreated; protected GeometricObject() { this(false,"white"); dateCreated = new java.util.Date(); } protected GeometricObject(boolean filled, String color) { //super(); this.filled = filled; this.color = color; dateCreated = new java.util.Date(); } public boolean isFilled() { return filled; } public void setFilled(boolean filled) { this.filled = filled; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public java.util.Date getDateCreated() { return dateCreated; } public void setDateCreated(java.util.Date dateCreated) { this.dateCreated = dateCreated; } @Override public String toString() { return "created on"+dateCreated+"\ncolor"+color+"and filled:"+filled; } public abstract double getArea(); public abstract double getPerimater(); }
Triangle类如下:
-
public class TriangleFromGeometricObject extends GeometricObject{ private double side1; private double side2; private double side3; public TriangleFromGeometricObject() { super(); } public TriangleFromGeometricObject(boolean filled, String color,double side1,double side2,double side3) { super(filled, color); this.side1 = side1; this.side2 = side2; this.side3 = side3; } public double getSide1() { return side1; } public void setSide1(double side1) { this.side1 = side1; } public double getSide2() { return side2; } public void setSide2(double side2) { this.side2 = side2; } public double getSide3() { return side3; } public void setSide3(double side3) { this.side3 = side3; } @Override public double getArea() { double area = Math.sqrt((getPerimater()/2)*(getPerimater()/2-side1)*(getPerimater()/2-side2)*(getPerimater()/2-side3)); return area; } @Override public double getPerimater() { return side1 + side2 + side3; } @Override public String toString() { return "TriangleFromGeometricObject [side1=" + side1 + ", side2=" + side2 + ", side3=" + side3 + ", toString()=" + super.toString() + "]"; } }
-
测试类:
-
public class TriangleCombine { public static void main(String[] args) { java.util.Scanner input = new java.util.Scanner(System.in); System.out.println("请输入是否填充:"); boolean filled = input.nextBoolean(); System.out.println("请输入颜色:"); String colorFFF = input.nextLine(); String color = input.nextLine(); System.out.println("请输入三角形的三条边:"); double side1 = input.nextDouble(); double side2 = input.nextDouble(); double side3 = input.nextDouble(); GeometricObject triangle = new TriangleFromGeometricObject(filled,color,side1,side2,side3); System.out.println("filled="+triangle.isFilled()); System.out.println("color="+triangle.getColor()); System.out.println("dateCrated="+triangle.getDateCreated()); System.out.println("side1="+side1+"\nside2="+side2+"\nside3="+side3); System.out.println("getArea="+triangle.getArea()); System.out.println("getPerimater="+triangle.getPerimater()); System.out.println("toString="+triangle.toString()); } }
java初学者,若有不足请大家指出!谢谢!
-
编写一个Java应用程序,该程序包括3个类:定义一个学生类,Student有姓名,学号,选学的课程列表 ,定义一个...
2018-03-08 21:05:07编写一个Java应用程序,该程序包括3个类: 定义一个学生类,Student有姓名,学号,选学的课程列表 定义一个课程类:课程名称,课程分数 (1)初始化一个学生,选择了三门课程,并添加到学生的属性中 (2)实现统计... -
编写一个Person类,包括属性、参构造器、方法。 编写一个 Student类,继承Person类。
2019-07-08 14:25:49Student类,继承Person类,增加sno...编写一个方法showInfo(返回自我介绍的字符串)。 public class Person1 { private String name; private int age; public Person1(String name, int age) { super(); t... -
C#--作业3:设计一个学生类,包括学号,姓名,性别属性。设计一个大学生类,继承自学生类,新增专业、高考...
2020-03-17 16:28:05设计一个学生类,包括学号,姓名,性别属性。设计一个大学生类,继承自学生类,新增专业、高考成绩;设计一个中学生类,继承自学生类,新增年级、班级属性。对类进行测试。 在这里插入代码片 using System; ... -
定义一个Employee类,其中包括表示姓名、街道地址、
2020-06-02 19:00:48定义一个Employee类,其中包括表示姓名、街道地址、城市和邮编等属性,包括ChangeName()和display()等函数。Display()使用cout语句显示姓名、地址、城市和邮编等属性,函数setName()改变对象的姓名属性,实现并测试... -
IntelliJ IDEA 中如何查看一个类的所有继承关系(当前类的所有继承关系图)
2016-10-19 10:50:50在 IntelliJ IDEA 中这个查看一个类也就是当前类的所有继承关系,包括实现的所有的接口和继承的类, 这个继承,不仅仅是一级的继承关系,包括好几层的继承。父类的父类的父类。直到最后。 可以很清楚明了的了解一个... -
定义一个Employee类,其中包括表示姓名、街道地址、城市和邮编等属性
2019-09-04 19:03:53定义一个Employee类,其中包括表示姓名、街道地址、城市和邮编等属性,包括ChangeName()和display()等函数。Display()使用cout语句显示姓名、地址、城市和邮编等属性,函数setName()改变对象的姓名属性,实现并测试... -
java设计一个名为Point的类,表示一个带x坐标和y坐标的点。该类包括: 两个带get方法的数据域x和y分别表示...
2019-11-30 19:57:12该类包括: 两个带get方法的数据域x和y分别表示它们的坐标。 一个创建点(0,0)的无参构造方法。 一个创建特定坐标点的构造方法。 一个名为distance的方法,返回从该点到Point类型的指定点之间的距离。 一个名为... -
编写一个手机类,包括手机品牌、手机型号, 方法包括显示手机信息,并编写测试类进行对象的创建
2018-01-03 20:13:26//编写一个手机类,包括手机品牌、手机型号, 方法包括显示手机信息,并编写测试类进行对象的创建 package sjpp; public class Mobile {// 定义Mobile类 String brand, type;// 成员变量 public ... -
一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
2014-04-01 15:23:24一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 一个.java源文件可以有多个类,但最多只能有一个public类。 java程序是从一个public类的main函数开始执行的,(其实是main线程)。 只能有一... -
设计一个类Student,该类包括姓名、学号和成绩。 设计一个方法,按照成绩从高到低的顺序输出姓名、学号和...
2019-07-27 11:50:432: 设计一个类Student,该类包括姓名、学号和成绩。 设计一个方法,按照成绩从高到低的顺序输出姓名、学号和成绩信息 (提示 方法的参数是一个学生数组) */ class Student{ private String name; private int ... -
定义一个人员类person,包括姓名,编号,性别,派生一个学生类student(增加成绩)
2018-04-23 18:07:53#include <iostream> using namespace std; class person{ private: string name,sex,number; public : person( string na ,string s,string n){ name=na; sex=s; number=n;... ... -
定义一个日期类:包括年、月、日三个成员变量,显示日期的方法
2018-05-14 16:58:47/*定义一个日期类:包括年、月、日三个成员变量,显示日期的方法 * 提供构造方法:定义无参构造方法,和有参构造方法*/代码如下:public class Demo { public static void main(String[] args) { Date date1=new ... -
C++实现一个有理数类,包括大小比较,有理数的加减乘除。测试你的类。
2018-06-20 19:26:43//实现一个有理数类,包括大小比较,有理数的加减乘除。测试你的类。 #include &amp;lt;iostream&amp;gt; #include &amp;lt;stdlib.h&amp;gt; class Rational { public: ... -
一个.java源文件中是否可以包括多个类(不包含内部类)?有什么限制?
2018-05-21 19:51:37可以有多个类,只能但有一个公共的类,并且公众的类名必须与文件名相harmony和谐。 -
定义一个Student类,包含学号和姓名两个字段,并定义一个班级类ClassList,该类包括一个Student集合,...
2019-03-31 08:02:31//定义一个班级类(保存所有的学生信息) class ClassList { private Student[] students; //该数组用于存放学生 public ClassList(int n) { students =new Student[n]; } //定义索引... -
java基础,继承类题目:编写一个Java应用程序,该程序包括3个类:Monkey类、People类和主类 E...
2016-09-22 23:21:0021.编写一个Java应用程序,该程序包括3个类:Monkey类、People类和主类 E。要求: (1) Monkey类中有个构造方法:Monkey (String s),并且有个public void speak() 方法,在speak方法中输出“咿咿呀呀......”的... -
编写一个学生类Students,该类成员变量包括学号no、姓名name、性别sex和年龄age
2017-11-08 17:33:18/*编写一个学生类Students,该类成员变量包括学号no、姓名name、性别sex和年龄age,该类的成员方法有genNo()getName ). * getSex().getAge().和setAge() 添加构造方法为所有成员变量赋初值,构造方法要有4种格式:... -
设计一个BankAccount类
2020-09-15 19:31:17设计一个BankAccount类,这个类包括: (1)一个int型的balance表时账户余额。 (2)一个无参构造方法,将账户余额初始化为0。 (3)一个带一个参数的构造方法,将账户余额初始化为该输入的参数。 (4)一个... -
题目: 编写一个学生类Students,该类成员变量包括学号no、姓名name、性别sex和年龄age
2017-11-07 21:13:34题目: 编写一个学生类Students,该类成员变量包括学号no、姓名name、性别sex和年龄age, -
定义一个雇员类Employee,包括属性:姓名,工号,年龄,工资。
2019-11-27 18:37:351、定义一个雇员类Employee,包括属性:姓名,工号,年龄,工资。 要求:工号的构成方式:(入职年月份)-(性别)-(3位随机序列码),其中入职年月份格式为yyyyMMdd;性别(枚举)为男记录00,性别为女记录01;随机... -
试编写一个栈的类模板(包括其成员函数定义)
2018-04-13 21:08:54试编写一个栈的类模板(包括其成员函数定义),以便为任何类型的对象提供栈结构数据的操作。操作至少包括:入栈和出栈操作。#include <iostream> using namespace std; const int depth=100; ... -
IntelliJ IDEA 中如何查看一个类的所有继承关系,包括父类与子类
2019-02-12 17:21:36一、查看当前类所有的父类 1、找到当前类所在的位置,右键选择Diagrams,然后选择Show Diagrams……,以spring的ClassPathXmlApplicationContext类为例: 2、在弹出的框中选择Java Class Diagrams: 3、可以...