请老师看看,存在什么问题。如果姓名输入空格或者不输入可以使用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 星