我在这里问了这个问题(以为我会帮助人们) 创建一个不必要的吸气剂并挖掘出我所拥有的巨大无知领域。
在这个答案中,有人向我指出我的代码有一个致命的缺陷,为了方便起见,我引用了:
“这是错误的:
public Patient(final String ptNo, final String ptName,
final String procDate, final int procType, final String injury,
final String drName) throws IOException
{
Patient.ptNo = getPtNo();
Patient.ptName = getPtName();
Patient.procDate = getProcDate();
Patient.procType = getProcType();
Patient.injury = getPtNotes();
Patient.drName = getDrName();
}
因为您完全忽略了作为参数传入的所有值。而是这样做:
public Patient(final String ptNo, final String ptName,
final String procDate, final int procType, final String injury,
final String drName) throws IOException
{
Patient.ptNo = ptNo;
Patient.ptName = ptName;
Patient.procDate = procDate;
Patient.procType = procType;
Patient.injury = injury;
Patient.drName = drName;
}
在这里你用参数值设置你的类的字段。”
我不明白的是,为什么这些值被忽略了。我调用单独的方法,例如:
public static String getPtName()
{
System.out.print("Enter patient name: \n");
try
{
ptName = stdin.readLine();
} catch (IOException e)
{
System.out.println("Error! Enter a valid option.");
getPtName();
}
return ptName;
}
所以我认为这是相同的,以更长的方式编写第二个代码块。
有人可以向我解释一下,为什么它不同?
编辑 来自 uni 的分配要求。
C) 为接受患者编号(字符串)、患者姓名(字符串)、手术日期(dd/mm/yy 格式的字符串)、手术类型(整数)、受伤描述的类提供构造函数(一个字符串)和对患者进行治疗的医生的医生姓名。
此构造函数应使用已传入的相应参数值初始化实例变量 - 它还应将患者注释实例变量初始化为最初传入的损伤描述,并将患者状态实例变量初始化为“S”(表示新患者已安排了程序)。
public Patient (String patientNo, String patientName, String procedureDate, int procedureType, String injuryDescription, String doctorName)
D) 实现患者编号、患者姓名、手术日期、患者笔记和医生姓名实例变量的访问器。