פורסם 2011 ביולי 214 שנים אני אמור לכתוב תרגיל עם מתודות שעושות כל מיני פעולות על תאריכים, סיימתי לכתוב את המתודות ועכשיו אני רוצה לבדוק אותם אז אני מתחיל בהדפסה של התאריך שהכנסתי כסטרינג והתאריך שמודפס לי תמיד 0\0\0using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace T270{ public class Date { public int Day; public int Month; public int Year; //print date method public void PrintDate() { Console.WriteLine(Day + "/" + Month + "/" + Year); } //set date method public void SetDate(int dd, int mm, int yy) { if (Day <= 30 && Day > 0 && Month > 0 && Month <= 12 && Year >= 0) { this.Day = dd; this.Month = mm; this.Year = yy; } } //convert date to string method public string toString() { return Day + "/" + Month + "/" + Year; } //returns the date of the next day method public Date nextDate() { Date nextDate = new Date(); nextDate.Day = this.Day; nextDate.Month = this.Month; nextDate.Year = this.Year; if (nextDate.Day == 30) { nextDate.Day = 1; if (nextDate.Month == 12) { nextDate.Month = 1; nextDate.Year++; } else { nextDate.Day++; } } else { nextDate.Day++; } return nextDate; } //returns true if both dates are equal method public bool IsEqual(Date DateEqual) { if (this.Day == DateEqual.Day && this.Month == DateEqual.Month && this.Year == DateEqual.Year) { return true; } else { return false; } } public int DaysFromZero() { return (this.Year - 1) * 360 + (this.Month - 1) * 30 + (this.Day - 1); } //returns true if object's date is later method public bool isLater(Date DateLater) { return this.DaysFromZero() > DateLater.DaysFromZero(); } //returns the difference in days between the 2 dates method public int Difference(Date DateDif) { return this.DaysFromZero() - DateDif.DaysFromZero(); } //return true if the values are legal as dates method public bool isLegalDate(int Day, int Month, int Year) { if (Day <= 30 && Day > 0 && Month > 0 && Month <= 12) { return true; } else { return false; } } } class Program { static void Main(string[] args) { Console.WriteLine("Enter Date: "); Date Date1 = new Date(); Date1.SetDate(int.Parse(Console.ReadLine()), int.Parse(Console.ReadLine()), int.Parse(Console.ReadLine())); string DateToString = ""; DateToString = Date1.ToString(); Console.WriteLine(Date1.toString()); Console.ReadLine(); } }}
פורסם 2011 ביולי 214 שנים אני חושב שהבעיה נמצאת בפעולה הזאת: public void SetDate(int dd, int mm, int yy) { if (Day <= 30 && Day > 0 && Month > 0 && Month <= 12 && Year >= 0) { this.Day = dd; this.Month = mm; this.Year = yy; } }אתה בודק בתנאי את Day, Month וYear במקום את dd,mm וyy..
פורסם 2011 ביולי 214 שנים טיפ קטן להבא - תלמד להשתמש בדיבאגר. אתה יכול ככה בקלות מאוד לעקוב צעד אחר צעד ולראות מה קורה בדיוק בתכנית שלך, לאיזה if נכנסים ולמה.
פורסם 2011 ביולי 214 שנים מחבר זה מה שאני עושה בד"כ (עכשיו לא עשיתי משום מה)אגב יש לי בעיה במתודה NextDate ואני לא מוצא אותה, היא לא מדפיסה לא את התאריך של היום הבא,אני עובד עם הדיבגר ורואה שהערכים הנכונים נכנסים אליה אבל בסופו של דבר ל-return נכנס סתם משהו (T270.Date)using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace T270{ public class Date { public int Day; public int Month; public int Year; //set date method public void SetDate(int dd, int mm, int yy) { if (dd <= 30 && dd > 0 && mm > 0 && mm <= 12 && yy >= 0) { this.Day = dd; this.Month = mm; this.Year = yy; } } //this method get number of days start from 1/1/00 and return the date public void SetDate(int daysFromZero) { this.Year = daysFromZero / 360 + 1; daysFromZero = daysFromZero % 360; this.Month = daysFromZero / 30 + 1; daysFromZero = daysFromZero % 30; this.Day = daysFromZero + 1; } //convert date to string method public string toString() { return Day + "/" + Month + "/" + Year; } //returns the date of the next day method public Date NextDate() { Date NextDate = new Date(); NextDate.Day = this.Day; NextDate.Month = this.Month; NextDate.Year = this.Year; if (NextDate.Day == 30) { NextDate.Day = 1; if (NextDate.Month == 12) { NextDate.Month = 1; NextDate.Year++; } else { NextDate.Day++; } } else { NextDate.Day++; } return NextDate; } //returns true if both dates are equal method public bool IsEqual(Date DateEqual) { if (this.Day == DateEqual.Day && this.Month == DateEqual.Month && this.Year == DateEqual.Year) { return true; } else { return false; } } //calculate how many days passed sinse 1/1/00 public int DaysFromZero() { int DaysFromZero = (this.Day - 1) + (this.Month - 1) * 30 + (this.Year - 1) * 360; return DaysFromZero; } //returns true if object's date is later method public bool isLater(Date DateLater) { return this.DaysFromZero() > DateLater.DaysFromZero(); } //returns the difference in days between the 2 dates method public int Difference(Date DateDif) { return this.DaysFromZero() - DateDif.DaysFromZero(); } //return true if the values are legal as dates method public bool isLegalDate(int Day, int Month, int Year) { if (Day <= 30 && Day > 0 && Month > 0 && Month <= 12) { return true; } else { return false; } } //return the date in new format public string ToLongString() { string StringMonth = ""; switch (this.Month) { case 1: StringMonth = "Jan"; break; case 2: StringMonth = "Feb"; break; case 3: StringMonth = "Mar"; break; case 4: StringMonth = "Apr"; break; case 5: StringMonth = "May"; break; case 6: StringMonth = "Jun"; break; case 7: StringMonth = "Jul"; break; case 8: StringMonth = "Aug"; break; case 9: StringMonth = "Sep"; break; case 10: StringMonth = "Oct"; break; case 11: StringMonth = "Nov"; break; case 12: StringMonth = "Dec"; break; default: StringMonth = "0"; break; } return Day + "/" + StringMonth + "/" + Year; } } class Program { static void Main(string[] args) { Console.WriteLine("Enter Date: "); Date Date1 = new Date(); Date1.SetDate(int.Parse(Console.ReadLine()), int.Parse(Console.ReadLine()), int.Parse(Console.ReadLine())); string DateToString = ""; DateToString = Date1.toString(); Console.WriteLine("The Date Is: " + Date1.toString()); Console.WriteLine("The Date In Other Format: " + Date1.ToLongString()); Console.WriteLine("Muner Of Days Passed Since 1/1/00: " + Date1.DaysFromZero()); Console.WriteLine("The Next Day Is: " + Date1.NextDate()); Console.ReadLine(); } }}
פורסם 2011 ביולי 214 שנים אני מניח שמדובר בהדפסה הרביעית. שים לב שאתה מנסה להדפיס שם אובייקט מטיפוס Date. בשביל לשרשר אובייקט למחרוזת (שזה מה שאתה עושה שם) הקומפיילר קורא לפונקציה ToString של האובייקט. כברירת מחדל, הפונקציה הזו מחזירה איזשהו ערך דיפולטי כלשהו. שים לב שב-Date שלך, לא דרכת על הפונקציה הזו (יש לו toString, אבל כיוון ש-#C היא case sensitive זו נחשבת לפונקציה אחרת).
פורסם 2011 ביולי 214 שנים מחבר רגע אז איך אני אמור לרשום את זה ?ככה זה לא נותן:Console.WriteLine("The Next Day Is: " + Date1.NextDate(Date1.Date1.toString()));
פורסם 2011 ביולי 214 שנים למה שזה יתן? אין שום הגיון בקוד שכתבת.בשביל להדפיס תאריך כלשהו, אתה צריך להמיר אותו למחרוזת (במקרה שלך זה באמצעות toString).
פורסם 2011 ביולי 314 שנים מחבר לא ממש הלך לי, יצרתי עוד משתנה Date2 והכנסתי את מה שהיה ב-Date1 ל-Date2 ועל Date2 עשיתי NextDate ואז toString ולא ממש הלך, זה ה-Main שלי: Console.WriteLine("Enter Date: "); Date Date1 = new Date(); Date1.SetDate(int.Parse(Console.ReadLine()), int.Parse(Console.ReadLine()), int.Parse(Console.ReadLine())); string DateToString = ""; string DateToString2 = ""; Date Date2 = new Date(); Date2 = Date1; Console.WriteLine("The Next Day Is: " + Date2.NextDate()); DateToString2 = Date2.toString(); DateToString = Date1.toString(); Console.WriteLine("The Date Is: " + Date1.toString()); Console.WriteLine("The Date In Other Format: " + Date1.ToLongString()); Console.WriteLine("Muner Of Days Passed Since 1/1/00: " + Date1.DaysFromZero()); Console.ReadLine();
פורסם 2011 ביולי 314 שנים מחבר רגע תן לי להבין יש לי בוא נגיד ב-Date2 את הערכים באובייקט כמו ב-Date1, אני מפעיל עליו קודם כל את NextDate שיקדם את הערכים לתאריך החדש ואז אני מפעיל עליו (Date2) את toString ?
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.