所以基本上我的程式是一個 StudySchedule,它接受用戶輸入(StudyTime、Subjects、PrioritizedSubjects、PriorityScale),然后根據這些值中的每一個創建一個時間表。它從一個類 CreateSchedule 開始,它接受所有用戶輸入,然后我的另一個類 CalculateScheduleTime 接受輸入并進行計算(Calculate 確實擴展到 Create)。
但是當我從 CreateSchedule 向 CalculateScheduleTime 請求變數時,變數顯示為 0.0 而不是我輸入的數字。
class CreateSchedule extends Test {
public String ScheduleName;
public double userStudyTime;
public double userSubjects;
public double userPrioritySubjects;
public double userSubjectScale;
public String getScheduleName() {
ScheduleName = setScheduleName();
return (ScheduleName);
}
public double getuserStudyTime() {
userStudyTime = setuserStudyTime();
return (userStudyTime);
}
public double getuserSubjects() {
userSubjects = setuserSubjects();
return (userSubjects);
}
public double getuserPrioritySubjects() {
userPrioritySubjects = setuserPrioritySubjects();
return (userPrioritySubjects);
}
public double getuserPriorityScale() {
userSubjectScale = setuserPriorityScale();
return (userSubjectScale);
}
public static String setScheduleName(){
System.out.println("What would you like to name your Schedule?");
Scanner sch = new Scanner(System.in);
return sch.nextLine();
}
public static double setuserStudyTime(){
System.out.println("How many hours are you studying for?");
Scanner sch = new Scanner(System.in);
return sch.nextDouble();
}
public static double setuserSubjects (){
System.out.println("How many subjects are you studying?");
Scanner sch = new Scanner(System.in);
return sch.nextDouble();
}
public static double setuserPrioritySubjects (){
System.out.println("How many subjects are you prioritizing?");
Scanner sch = new Scanner(System.in);
return sch.nextDouble();
}
public static double setuserPriorityScale (){
System.out.println("On a scale of 1 - 5, how much priority would you like to give the prioritized subjects?");
Scanner sch = new Scanner(System.in);
return sch.nextDouble();
}
public double confirm() {
System.out.println("Input Results:");
System.out.println("Schedule Name: " ScheduleName);
System.out.println("Study Time: " userStudyTime);
System.out.println("Subjects: " userSubjects);
System.out.println("Priority Subjects: " userPrioritySubjects);
System.out.println("Priority Scale" userSubjectScale);
return (0);
}
}
class CalculateScheduleTime extends CreateSchedule {
public double SubjectPriorityTime;
public double SubjectRemainderTime;
public CalculateScheduleTime() {
}
public double calcSubjectPriorityTime() {
System.out.println("Priority" userSubjectScale);
double PriorityPercent = ((double) (userSubjectScale / 5.0));
System.out.println(userSubjectScale);
SubjectPriorityTime = ((double) (PriorityPercent * userStudyTime));
System.out.println("Time to Prioritized Subject is: " SubjectPriorityTime);
return (SubjectPriorityTime);
}
public double calcSubjectRemainderTime() {
System.out.println("Remainder");
SubjectRemainderTime = ((double) (SubjectPriorityTime - userStudyTime));
System.out.println("Remainder time to Subject is: " SubjectRemainderTime);
return (SubjectRemainderTime);
}
}
public class Test {
public static void main(String[] args) {
CreateSchedule user = new CreateSchedule();
user.getScheduleName();
user.getuserStudyTime();
user.getuserSubjects();
user.getuserPrioritySubjects();
user.getuserPriorityScale();
user.confirm();
CalculateScheduleTime calc = new CalculateScheduleTime();
calc.calcSubjectPriorityTime();
calc.calcSubjectRemainderTime();
}
}
uj5u.com熱心網友回復:
這不是子類化的目的。
類描述給定實體可以做什么。“狗”是一類。“Lassie”就是其中的一個例子。
子類化是你對概念而不是實體所做的事情。例如,您可能有一個類“Animal”和一個子類“Dog”:Dog 只是專門化 Animal:Any Dog 也是 Animal,因此可以做并擁有所有 Animals 所具有的所有屬性,也許還有一些額外的東西和屬性(用 java 的說法:它將擁有超類的所有欄位和方法,并且可以添加更多。它不能洗掉任何)。
當你寫作時CreateSchedule user = new CreateSchedule();,就像寫作:Dog rover = new Dog();- 然后你寫作CalculateScheduleTime calc = new CalculateScheduleTime();就像寫作GermanSchnauser fifi = new GermanSchauser();。
您制作了一條全新的狗,它擁有所有這些欄位的自己的副本,這些欄位仍然是 0 - 未初始化。
'calc' 的東西應該只是進去CreateSchedule,可能。但是這段代碼有很多錯誤:
- 類代表有形的概念。一個好的類名是“Schedule”。或者也許是“ScheduleCreator”。“CreateSchedule”不是一個正確的類名,將其視為“創建時間表的代碼”是完全不正確的,考慮類的正確方法是它們代表什么。“這是解釋 Schedules 可以做什么以及如何創建它們的代碼”,這是考慮它的正確方法(并且該類將稱為 Schedule. Not CreateSchedule)。
- 命名的方法
getX不應該有副作用。 - 您不應該每次都制作新的掃描儀。
- 設定者接受一個論點。他們不問用戶。
- 分開關注。Schedule 應該只是安排一些事情——其他事情應該是與用戶進行互動。為此的主要方法或類(可能是 TextBasedScheduleCreator)。
- 這些
calcX()方法將結果存盤在一個欄位中,然后將其回傳,并且該欄位從未在任何地方實際使用過。直接退貨吧,沒有那個欄位。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/477424.html
