שאלה ב-Java

Archer Inc

New member
שאלה ב-Java

קטע התוכנה הבא לא אמור לעשות יותר מדי, סתם הצגות של כל מני רכיבים. הוא לא מושלם, כמובן. בכל השורות בהן אני משתמש בפונקציות של הרכיבים שיצרתי, כגון c1 או frame המהדר שלי נותן לי שגיאה- מדוע? יש לציין שהוא נתן שגיאה גם כאשר הגדרתי את הצ'קבוקס בשורה נפרדת ולא באותה שורה לאחר הגדרת המצביע. אגב, אם מישהו יכול לקשר אותי לסביבת פיתוח ג'אווה יבשה לחלוטין המיועדת לכתיבה, קימפול והרצה בלבד, ולא לכתיבת פרוייקטים גדולים (לצרכי למידה, כמובן), אודה לו. import java.awt.*; public class StudentApp { TextField textfield= new TextField(20); CheckboxGroup cbg = new CheckboxGroup(); Checkbox cb1 = new Checkbox("male", cbg, true), cb2 = new Checkbox("female", cbg, false); Choice c1 = new Choice(); c1.add("computer science"); c1.add("math"); c1.add("electronics"); c1.add("architecture"); Frame frame= new Frame("frame"); frame.setLayout(new FlowLayout()); }
 

Archer Inc

New member
סליחה... נסיון לתקן את הצגת הקוד:

import java.awt.*; public class StudentApp { TextField textfield= new TextField(20); CheckboxGroup cbg = new CheckboxGroup(); Checkbox cb1 = new Checkbox("male", cbg, true), cb2 = new Checkbox("female", cbg, false); Choice c1 = new Choice(); c1.add("computer science"); c1.add("math"); c1.add("electronics"); c1.add("architecture"); Frame frame= new Frame("frame"); frame.setLayout(new FlowLayout()); }​
 
נראה לי....../images/Emo26.gif

אחרי ההצהרה של ה-cb1 שמת פסיק במקום נקודה-פסיק...
 

הצלוי

New member
הבעיה היא

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

voguemaster

New member
../images/Emo45.gif

אי אפשר לקרוא למתודות (כמו add) בחלק שבו מגדירים משתנים. מותר רק לייצר אובייקטים
הייתי ממליץ להכניס את הקריאות ל-add לתוך הקונסטרקטור.
 

Archer Inc

New member
אזי, כל המתודות מקומן בפונקציות?

כלומר, לא ניתן לבצע פעולות על אובייקטים פרט לייצורם בחלק ההוא? ומה לגבי טיפוסים "רגילים" (int, char...)? האם ניתן להשתמש בפונקציות שונות עליהם בחלק זה? ומה לגבי פעולות בסיסיות (חיבור, חיסור)?
 

Archer Inc

New member
ושאלת קיטבג...

מה הסיבה? כלומר, האם מדובר בבטיחות בלבד (הפרדה בין משתנים למתודות) או שיש סיבה יותר עמוקה?
 

הצלוי

New member
בדיוק

אתה לא יכול לבצע פעולות על אובייקטים, למעט אתחול, כדי לתת ערך ראשוני כשיוצרים את האובייקט. לא משנה אם זה טיפוס רגיל או לא. אתה יכול להשתמש בפעולות בסיסיות כמו חיבור, חיסור אם זה באתחול משתנים. דוגמאות: int y = 3; int x = y + 1; אבל אסור לעשות משהו כזה: int x; x = y + 1; (כי פה זה כבר השמה רגילה).
 
איזו שגיאה הוא נותן?...../images/Emo26.gif

איך נראית הקריאה?... מי? מה? מו?...
לגבי סביבת עבודה - Eclipse. טוב לכל הגדלים לכל המינים...
 

Archer Inc

New member
תשובה.

<identifier> expected c1.add( "computer science"); ^​
זה מה שנותנות כל שאר השורות הדומות. שורת הפריים נותנת:
<identifier> expected frame.setLayout( new FlowLayout()); ^​
כמובן שהרווח בין הסוגר הפותח למילה לא קיים, אך הוספתי אותו ע"מ להראות בבירור לאן החץ מצביע. האם אפשר לקבל קישור לסביבת העבודה הנ"ל, בבקשה?
 

Archer Inc

New member
ובנוסף...

העזרה של סביבת הפיתוח הוסיפה על דברי הדיבאגר כאשר מקמתי את הסמן מעל השורות הסוררות: <identifier> expected package c1 does not exist או, כמובן, שמות העצמים האחרים במקום c1 בשורות המתאימות.
 

הצלוי

New member
סביבת הפיתוח היבשה ביותר שאני מכיר

היא לא להשתמש בסביבת פיתוח
שמתי לב שהרבה פעמים זה עדיף מסביבת פיתוח כלשהיא.. אתה יכול לכתוב את התכנית בnotepad או משהו יותר משוכלל כמו Textpad, לקמפל בדוס ע"י כתיבת javac name.java או להריץ ע"י: java name אם אתה רוצה להריץ Applets דרך אגב, אתה יכול להשתמש בAppletviewer שאני חושב שמגיע עם השפה עצמה. appletviewer name.html
 

Archer Inc

New member
אחלה! תודה. רק...

לא הבנתי כ"כ, איפה אני מוצא את ה-Appletviewer הזה?
 

הצלוי

New member
אה, זה מגיע

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