עבור לתוכן

C# - עזרה בתרגיל עם מתודות

Featured Replies

פורסם

יש לי תרגיל שאני אמור לבנות ממספר מתודות, בגדול זה לקבל 2 תאריכים ולכתוב מספר מתודות, אחת מהם היא לקחת את התאריך שמוכנס כ-3 INTs ןלהמיר אותו לסטרינג, אני מנסה לקחת את ה-day ותו תו לשרשר אותו למשתנה והקומפיילר כותב לי: 'int' does not contain a definition for 'Lenth' and no extension method 'Lenth' accepting a first argument of type 'int' could be found (are you missing a using directive or an assembly reference?)

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;




//method
public void setDate(int dd, int mm, int yy)
{
this.Day = dd;
this.Month = mm;
this.Year = yy;
}


//convert date to string metod
public string toString(int day, int month, int year)
{
string stDate = "";


for (int i = 0; i < day.Lenth; i++)
{


}


return stDate;
}
}


class Program
{


static void Main(string[] args)
{
Console.WriteLine("Enter The First Date: ");
Console.Write("Enter Day: ");
string dd = Console.ReadLine();


Console.Write("Enter Month: ");
string mm = Console.ReadLine();


Console.Write("Enter Year: ");
string yy = Console.ReadLine();


Console.WriteLine("Enter The Second Date: ");
Console.Write("Enter Day: ");
string dd2 = Console.ReadLine();


Console.Write("Enter Month: ");
string mm2 = Console.ReadLine();


Console.Write("Enter Year: ");
string yy2 = Console.ReadLine();


}
}
}

הבעיה שלי נמצאת במתודה שנקראת toString כשאני רושם day.Lenth

פורסם

קודם כל, זה נקרא Length ולא Lenth.

לגבי הבעיה שלך - day הוא int. למספרים אין "אורך".

חוץ מזה, פונקציית toString לא אמורה לקבל ארגומנטים - היא אמורה להמיר את האובייקט עצמו למחרוזת, לא משהו שמגיע מחוץ לאובייקט.

פורסם
  • מחבר

מה ז"א אמורה להמיר את האובייקט עצמו למחרוזת, לא משהו שמגיע מחוץ לאובייקט ? איך אני אמור לכתוב את זה ?

פורסם

מאיפה אתה לומד #C? פתח את הספר שממנו אתה לומד ותקרא שם על toString ואיך מממשים אותה.

פורסם
  • מחבר

אני לומד מספר ולא מצאתי בו את זה.

פורסם

בשום מקום בספר לא מוסבר על הפונקציה ToString ואיך אמורים לממש אותה?

מאיזה ספר אתה לומד?

אני אשמח אם תכתוב כאן את התרגיל במלואו.

בכל מקרה, זה לא ממש משנה. יש לך מחלקה בשם Date שיש לה שלושה שדות - יום, חודש ושנה. כמו שיש לך (או יכולות להיות לך) מתודות של המחלקה הזו שמחזירות את הערכים של Day/Month/Year, ככה צריכה להיות גם מתודה שמחזירה את הייצוג של התאריך כמחרוזת, מתוך הנתונים שיש בתוך האובייקט - כלומר, היא צריכה לבנות את המחרוזת מתוך השדות Day/Month/Year של האובייקט הנוכחי (this), ולא מתוך ארגומנטים שמגיעים מחוץ לפונקציה.

פורסם
  • מחבר

זה התרגיל:

Write a class for "Date". Assume that a year has 12 months of 30 days each.

Keep 3 private field:

int dd; int mm; int yy;

Keep the following methods:

void setDate(int dd, int mm, int yy);

string toString(); //convert date to string

Date nextDay(); //returns the date of the next day.

bool isEqual(Date d); //which returns true if both dates are equal

bool isLater(Date d); //which returns true if object's date is later than d

int difference (Date d); which returns the difference in days between the 2 dates (value will be positive if d is later than object's date)

bool isLegalDate(int dd, int mm, int yy); return true if the values are legal as dates.

פורסם

אז למה אתה עושה דברים שהתרגיל במפורש אומר לעשות אחרת? לדוגמה, השמות של המשתנים שלך לא נכונים, הנראות (visibility) שלהם לא מתאימה (התרגיל דורש private, אתה עושה public...) וחוץ מזה התרגיל מבקש אומר לך בדיוק מה צריכה להיות החתימה של toString (כלומר, הוא לא מקבל ארגומנטים).

תחשוב על איך ממירים מספר למחרוזת. עכשיו תחשוב על איך אתה מציג שלושה מספרים כמחרוזת אחת. אם אתה לא יודע, סימן שאתה צריך כנראה לחזור קצת אחורה בספר...

נ.ב. ערוך בבקשה את הכותרת כך שתהיה אינפורמטיבית.

פורסם
  • מחבר

טעות שלי, אני אמור לעשות public ולא private.

איזה שמות משתנים שלי לא נכונים ?

ובקשר למתודה toString תיקנתי אותה אבל אני לא מבין עם איזה משתנים לעבוד בפנים (אני יודע איך לשרשר למחרוזת) אני אמור לעבוד בפנים עם DAY, MONTH ו-YEAR ?

פורסם

return dd.tostring() + "-" + mm.tostring() + "-" + yy.tostring();

פורסם
  • מחבר

תודה רבה.

למה הוא אומר שיש שגיאה ב-dd, mm, yy ?

The name 'dd' does not exist in the current context

פורסם

אז למה אתה עושה דברים שהתרגיל במפורש אומר לעשות אחרת? לדוגמה, השמות של המשתנים שלך לא נכונים

פורסם
  • מחבר

אתה מתכוון לזה ?

public int Day;
public int Month;
public int Year;

פורסם

כן (מצטער, אמרתי משתנים כשהתכוונתי שדות, קיוויתי שזה יהיה ברור בכל זאת).

שים לב גם שהתרגיל דרש שהם יהיו private, לא public.

פורסם
  • מחבר

זו טעות שלי, הם אמורים להיות PUBLIC

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים