עבור לתוכן

בעיה בתוכנה JAVA שלא עובדת...

Featured Replies

פורסם

ניסיתי באמת את כל הדרכים בתוכנה למימוש שליחה וקבלה (וירטואלית) של מייל והוא נותן לי שגיאות ריצה

לא ברורות בשתי מחלקות (כשמות הקובץ), אשמח אם מישהו יוכל לכוון אותי לשגיאה :smile1:

תודה !

[attachment deleted by admin]

פורסם

שים לב שהודעת השגיאה מופיעה לך למטה.

בתמונה הראשונה - הגדרת מחלקה בשם mail (עם m קטנה), וניסית להגדיר לה בנאי בשם Mail (עם M גדולה).

ג'אווה היא case sensitive, כלומר mail ו-Mail הם שני דברים שונים.

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

בתמונה השנייה - אתה מעביר פרמטר בשם "new content" במקום "newContent". כיוון שכתבת "new content", הקומפיילר חושב שאתה מנסה ליצור (באמצעות המילה השמורה new) משתנה חדש מטיפוס content, וצועק שאתה צריך לשים סוגריים שם (כי יצירת אובייקט מחייבת סוגריים).

נ.ב. להבא, נסה לא להעלות תמונה של הקוד, אלא תעתיק את הקוד עצמו ותכניס אותו באמצעות כפתור "הכנס קוד" שלמעלה (כפתור בצורת #).

תרשום גם את באיזה שורות היו בעיות, ואת הודעות השגיאה.

ככה יהיה לנו קל יותר לעזור לך.

פורסם
  • מחבר

מצ"ב הקודים ע"מ להמשיך הדיון בנושא:

מחלקת Mail Client:

public class MailClient
{
private String email;
private Mail _message;

public MailClient (String address)
{
email = address;
_message = null;
}

public String getEmail()
{
return email;
}

public void setEmail( String c )
{
email = c;
}

public String getMessage()
{
String result;
if ( _message == null )
result = "No Message";
else
result = _message.toString();
return result;
}

public void send (MailClient to , String subject , String content)
{
to.setEmail ( email );
_message.setTo ( email );
_message.setContent ( content );
_message.setSubject( subject );
getMessage();
}

public void reply ( MailClient to , String newContent )
{
re = addRE();
_message.setTo ( email );
_message.setContent ( new Content );
_message.setSubject ( s + re );
getMessage();
}
}

ומחלקת Mail:

public class Mail
{
private String _from , _to , _subject , _content;

public Mail (String from , String to , String subject , String content)
{
_from = from;
_to = to;
_subject = subject;
_content = content;
}

public Mail ( Mail other )
{
this._from = _from;
this._subject = subject;
this._content = content;
}

public String getFrom()
{
return _from;
}

public String getTo()
{
return _to;
}

public String getSubject()
{
return _subject;
}

public String getContent()
{
return _content;
}

public void setFrom ( String a )
{
_from = a;
}

public void setTo ( String b )
{
_to = b;
}

public void setSubject ( String c )
{
_subject = c;
}

public void setContent ( String d )
{
_content = d;
}

public String toString ()
{
String message;
message = "To : " +_to +"\n" +"From : " +_from +"\n" +"Subject : " +_subject +"\n" +content;
return (message) ;
}
}

עכשיו תיקנתי את מה שאמרת שתקול בתוכנית ולמרות זאת הוא עדיין רושם לי את התקלות כלהלן (מצ"ב) :'(

[attachment deleted by admin]

פורסם

בראשון:

הוא אומר לך שהוא לא מוצא משתנה בשם subject.

שים לב שבשביל לקחת את subject מתוך other, אתה צריך לעשות ככה:

this._subject = other._subject;

(זה נכון גם לשאר הממברים)

בשני:

עדיין יש לך רווח מיותר.

פורסם
  • מחבר

בראשון:

הוא אומר לך שהוא לא מוצא משתנה בשם subject.

שים לב שבשביל לקחת את subject מתוך other, אתה צריך לעשות ככה:

this._subject = other._subject;

(זה נכון גם לשאר הממברים)

בשני:

עדיין יש לך רווח מיותר.

אוי איך לא שמתי לב לרווח :kopfpatsch: , אבל עכשיו הוא כאילו אומר לי שהוא לא מכיר את re (מצ"ב) איך

הוא לא מכיר אותו ? ואיך הוא רוצה שאגדירו ?

[attachment deleted by admin]

פורסם

למה שהוא יכיר את המשתנה re אם לא הגדרת אותו בשום מקום?

פורסם
  • מחבר

למה שהוא יכיר את המשתנה re אם לא הגדרת אותו בשום מקום?

איך צריכה להיראות המתודה addRE ע"מ שהתוכנית תעבוד באופן תקין ? :nixweiss:

צריך עזרה בכתיבה שלה...

פורסם

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

עבור הre - מה אתה רוצה לעשות איתו?

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


int a;
int 1dsd; //-----------------------------------

אם תרשום ככה, יהייה פשוט יותר לזהות את הבעיה, פחות עבודה לך, ופחות מעמסה על השרת החביב.

פורסם
  • מחבר

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

עבור הre - מה אתה רוצה לעשות איתו?

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


int a;
int 1dsd; //-----------------------------------

אם תרשום ככה, יהייה פשוט יותר לזהות את הבעיה, פחות עבודה לך, ופחות מעמסה על השרת החביב.

חשבתי להגדיר שיטה addRE שכשמה כן היא, דואגת למחרוזת של התגובה במייל שמגיעה כביכול מהמשתמש השני...

אגב בהודעה השניה אני חושב כבר הכנסתי את הקוד כמו שציינת...

פורסם

תיצור פונקציה שמחזירה STRING, ובתוך הSTRING שמה את המידע הישן של ההודעה. אתה יכול להעזר בGETMESSAGE בשביל זה + איזה תוספת לסימן הודעת הREPLAY (קווים או משהו).

ארכיון

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

דיונים חדשים