请老师看看,存在什么问题。如果姓名输入空格或者不输入可以使用String方法去对比吗
package com.imooc.teat; import com.imooc.score.Subject; import com.imooc.score.Student; public class Text { public static void main(String[] args) { //创建学科对象 Subject sub = new Subject("计算机科学与应用", "J0001", 4); System.out.println(sub.show()); System.out.println("==============================="); //创建学生对象 Student stu1 = new Student("吴彦祖", "男", "X51099", 66); Student stu2 = new Student("小晶晶", "女", "X51100", 2); Student stu3 = new Student("蔡徐坤", "中", "X51101", 20); //传入学生对象进行关联并输出 sub.addStudent(stu1); sub.addStudent(stu2); sub.addStudent(stu3); System.out.println("计算机科学与应用学科的人数为:"+sub.printStudent()+"人"); //使用对象数组做为构造方法参数 //创建数组对象 // Student[] stu = new Student[5]; // stu[0] = new Student("吴彦祖", "男", "X77210", 19); // stu[1] = new Student("李小三", "女", "X77211", 25); // stu[2] = new Student("黄飞鸿", "男", "X77212", 99); // stu[3] = new Student("","","",0); // stu[4] = new Student("", "无性别", "", 0); // //创建Subject对象,将stu做为参数 // Subject sub = new Subject("计算机科学与应用", "J0001", 999, stu); // System.out.println(sub.show()); // System.out.println("选择该专业的学生人数为:"+sub.printStudent()+"人"); // //从无参构造方法中进入 // Student sd = new Student(); // Subject su = new Subject(); // // System.out.println("==========================="); // su.addStudent(sd); // System.out.println("该专业的学生人数为:"+su.printStudent()+"人"); } }
Subject类
package com.imooc.score; //专业类 public class Subject { private String subjectName;// 专业名称 private String subjectNo;// 专业编号 private int subjectTime;// 专业时间,学制 private Student[] stud; // 选择该科目的学生 private int subjectNumber; // 选择该科目学生的人数 // 无参构造方法 public Subject() { } /** * 带参构造(重载) * * @param subjectName 传入的专业名称 * @param subjectNo 传入的专业编号 * @param subjectTime 传入的专业学制 */ public Subject(String name, String no, int time) { setSubjectName(name); setSubjectNo(no); setSubjectTime(time); } /** * 带参构造(重载,带Student对象) * * @param name 传入的专业名称 * @param no 传入的专业编号 * @param time 传入的专业学制 * @param stud 传入的学生对象 */ public Subject(String name, String no, int time, Student[] stud) { setSubjectName(name); setSubjectNo(no); setSubjectTime(time); setStudent(stud); } // set\get方法 public void setSubjectName(String subjectName) { this.subjectName = subjectName; } public String getSubjectName() { // 如果获取的字符串为空,返回指定字符串 if (subjectName == null) return "专业未指定"; else return subjectName; } public void setSubjectNo(String subjectNo) { this.subjectNo = subjectNo; } public String getSubjectNo() { // 如果获取的编号未被赋值,返回指定字符串 if (subjectNo == null) return "编号未指定"; else return subjectNo; } public void setSubjectTime(int subjectTime) { // 如果参数小于2或者大于5,强行赋值为4 if (subjectTime < 2 || subjectTime > 5) this.subjectTime = 4; else this.subjectTime = subjectTime; } public int getSubjectTime() { // 如果获取学制为0时,返回厂长的暗号 if (subjectTime == 0) return 7777777; else return subjectTime; } public void setStudent(Student[] stud) { // 从构造方法接收后,为学生学科赋值 for (int i = 0; i < stud.length; i++) { stud[i].setSubject(this); } this.stud = stud; } public Student[] getStudent() { // 如果发现未创建对象,先创建后返回 if (stud == null) stud = new Student[100]; return stud; } public void setSubjectNumber() { this.subjectNumber = 0; } public int getSubjectNumber() { return subjectNumber; } /** * 将学生对象和专业对象进行关联,(用于从不带学生对象的构造函数中进入的步骤) * * @param stu 传入的学生对象 */ public void addStudent(Student stu) { for (int i = 0; i < getStudent().length; i++) { if (getStudent()[i] == null) { getStudent()[i] = stu; stu.setSubject(this); return; } } } /** * 输出信息函数 * * @return 返回Subject类,各信息打包成的字符串 */ public String show() { String str; str = "专业信息如下:\n专业名称:" + getSubjectName() + "\n专业编号:" + getSubjectNo() + "\n学制年限:" + getSubjectTime(); return str; } /** * 输出选择该科目的学生信息 * * @return 选择该科目的学生人数 */ public int printStudent() { int i; System.out.println(getSubjectName()+"科目学生信息如下"); // 学生对象不为null是,循环输出学生信息 for (i = 0; i < getStudent().length; i++) { if(getStudent()[i] != null) { System.out.println("==============================="); System.out.println(getStudent()[i].showStudent()); }else return i; } return i; } }
Student类
package com.imooc.score; //学生类 public class Student { private String studentName; // 学生姓名 private String studentSex; // 学生性别 private String studentNo; // 学生编号 private int studentAge; // 学生年龄 private Subject sub; // 学生所选专业 // 无参构造 public Student() { } /** * 含参构造方法(重载) * * @param name 学生姓名 * @param sex 学生性别 * @param no 学生编号 * @param age 学生年龄 */ public Student(String name, String sex, String no, int age) { setStudentName(name); setStudentSex(sex); setStudentNo(no); setStudentAge(age); } /** * 含参构造方法(重载,带Subject对象) * * @param name 学生姓名 * @param sex 学生性别 * @param no 学生编号 * @param age 学生年龄 * @param sub 所选专业 */ public Student(String name, String sex, String no, int age, Subject sub) { setStudentName(name); setStudentSex(sex); setStudentNo(no); setStudentAge(age); setSubject(sub); } // set\get方法 public void setStudentName(String name) { this.studentName = name; } public String getStudentName() { // 如果从无参构造进入后,不进行set函数赋值,要返回时,直接返回指定字符串 if (studentName == null) return "王麻子"; else return studentName; } public void setStudentSex(String sex) { // 如果输入的性别不是男也不是女则强制赋值为指定字符串 if (sex.equals("男") || sex.equals("女")) this.studentSex = sex; else this.studentSex = "强人锁男"; } public String getStudentSex() { // 走无参构造方法进来后未赋值就返回,返回指定字符串 if (studentSex == null) return "未知"; else return studentSex; } public void setStudentNo(String no) { this.studentNo = no; } public String getStudentNo() { // 如果没有值,则返回指定字符串 if (studentNo == null) return "98757"; else return studentNo; } public void setStudentAge(int age) { // 如果年龄大于60或者小于10,强行赋值为18 if (age < 10 || age > 60) this.studentAge = 18; else this.studentAge = age; } public int getStudentAge() { // 如果数值未初始,返回18 if (studentAge == 0) return 18; else return studentAge; } public void setSubject(Subject sub) { this.sub = sub; } public Subject getSubject() { // 如果没有对象则建立一个马上返回 if (sub == null) return new Subject(); else return sub; } /** * 将Student对象信息打包成一个字符串 * * @return 返回由对象信息打包成的字符串 */ public String showStudent() { String str; str = "姓名:" + getStudentName() + "\n性别:" + getStudentSex() + "\n学号:" + getStudentNo() + "\n年龄:" + getStudentAge() + "\n科目:" + getSubject().getSubjectName() + "\n学制年限:" + getSubject().getSubjectTime() + "\n学科编号:" + getSubject().getSubjectNo(); return str; } }
3
收起
正在回答
1回答
同学你好,代码完成的非常好,
如果姓名中输入空格或者不输入,我们需要使用equals()方法进行比较,而不是使用‘==’。因为equals方法比较的是字符串的内容。而==比较的是两个对象的地址。所以建议修改为:
另外,不建议在get方法中判断,因为如果只是在get中做判断,相当于获取到的不是真实属性的值,而在set中进行设置,才可以给属性设置要求中的值 。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星