ABA


"הגדרת גודל מערך לפי קלט מתוך קובץ (JAVA)"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #20631 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 20631
danny444
חבר מתאריך 14.9.08
1980 הודעות
   17:16   16.04.14   
אל הפורום  
  הגדרת גודל מערך לפי קלט מתוך קובץ (JAVA)  
 
   היי לכולם.
אני מעוניין ליצור מערכים (רגילים ומטריצות) בהתאם לנתונים שאני קורא מתוך קובץ. איך ניתן לעשות זאת בהנחה ואני מעוניין שהמערכים יהיו גלובליים מאחר ומדובר במחלקה עם מספר שיטות שמשתמשות במערכים האלה.

תודה.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  מה כתבת כבר? inno3D 16.04.14 18:32 1
     תשובה danny444 16.04.14 18:56 2
         אם אתה מכריז על משתנה אתה לא חייב לתת לו ערך inno3D 16.04.14 19:30 3
             מכתב danny444 16.04.14 19:42 4
                 בJAVA המשמעות של משתנה גלובלי היא מעט שונה asco88  16.04.14 22:04 5
                     הnew class הזה הוא חדש לי danny444 17.04.14 01:59 6
                         טוב השתמשתי במילה Class שזאת מילה שמורה, טעות שלי. asco88  17.04.14 09:56 7
                             תודה, אבל העניין הוא שברגע שאני מגדיר את המערכים בMAIN danny444 18.04.14 10:40 8
                                 זה לא נכון מה שאתה אומר אחי.. inno3D 18.04.14 17:57 9
                                     מכתב danny444 18.04.14 19:03 10
                                         אוקי.. inno3D 19.04.14 09:57 11
                                             כן, זה מה שניסיתי danny444 19.04.14 10:01 12
                                                 מה כוונה האתחול מתרחש ב MAIN? inno3D 19.04.14 10:09 13
                                                     הכוונה היא להגדרת הגדלים של המערכים danny444 19.04.14 13:41 14

       
inno3D
חבר מתאריך 21.4.02
4533 הודעות
   18:32   16.04.14   
אל הפורום  
  1. מה כתבת כבר?  
בתגובה להודעה מספר 0
 
   לא הבנתי ממש מה הבעיה להגדיר אותם בתור משתנים של המחלקה ואז הם גלובליים לכל המתודות

לא הבנת איך לקרוא מקובץ? או איך להגדיר מערך?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
danny444
חבר מתאריך 14.9.08
1980 הודעות
   18:56   16.04.14   
אל הפורום  
  2. תשובה  
בתגובה להודעה מספר 1
 
   כל הקוד בנוי.
בניתי אותו עם איזהשהם גדלים שאני הגדרתי, אבל העניין הוא שאני צריך להגדיר את המערכים שתלויים בקריאה מתוך הקובץ.

נגיד בקובץ יש ככה:
n=3
k=3

כמובן המספרים לא קבועים.

מתוך זה שאני קורא מהקובץ (אגב אין לי בעיה עם הקריאה עצמה מהקובץ) שn=3

אני צריך לבנות מטריצה בגודל n עצרת וnCr כלומר n בחר r (אר אצלי קבוע)


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

תודה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
inno3D
חבר מתאריך 21.4.02
4533 הודעות
   19:30   16.04.14   
אל הפורום  
  3. אם אתה מכריז על משתנה אתה לא חייב לתת לו ערך  
בתגובה להודעה מספר 2
 
   תגיד אתה רוצה מערך של int
אתה מכריז עליו


private int() arr;

הסוגריים הם מרובעים..


ואז במתודה שאתה קורא את הגדלים אתה מאתחל את המערך..


int size = readFromFile(filename);
arr = new int(size);

הסוגריים הם מרובעים..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
danny444
חבר מתאריך 14.9.08
1980 הודעות
   19:42   16.04.14   
אל הפורום  
  4. מכתב  
בתגובה להודעה מספר 3
 
   תודה, אבל את העניין הזה אני מכיר.
העניין הוא שאני חייב שהמערכים האלה יהיו גלובליים, כלומר בתחילת המחלקה.
הרצה של פונקציה מתרחשת בMAIN אחרי ההגדרה של המערכים, ולכן המערכים שלי יקבלו ערכי ברירת מחדל בלי קשר לגדלים שאני מעוניין עבורם.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
asco88 
חבר מתאריך 17.6.04
26757 הודעות
   22:04   16.04.14   
אל הפורום  
  5. בJAVA המשמעות של משתנה גלובלי היא מעט שונה  
בתגובה להודעה מספר 4
 
השוני הוא בהגדרת המשתנה, תראה כאן:
http://stackoverflow.com/questions/215497/in-java-whats-the-difference-between-public-default-protected-and-private

משתנה שתגדיר כPrivate למשל, יהיה זמין לכל מתודה בתוך המחלקה, Public יהיה זמין גם למחלקות אחרות באותה "חבילה".

אתה אמור, להבנתי, להגדיר את המערכים בתחילת המחלקה מחוץ לכל המתודות, הMAIN וגם הבנאי של המחלקה.
כל דבר שתגדיר שם, בוודאות יהיה זמין לכל מתודה במחלקה.

אתה יכול להגדיר את המערכים בלי להוסיף new Class() וכך הם לא יאותחלו.
תבצע את האיתחול כשתדע את הגודל.

חשוב רק לא לנסות לקרוא או לכתוב במערך שלא אותחל.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
danny444
חבר מתאריך 14.9.08
1980 הודעות
   01:59   17.04.14   
אל הפורום  
  6. הnew class הזה הוא חדש לי  
בתגובה להודעה מספר 5
 
   כאשר אני מגדיר קלאס אני פשוט רושם public class xx { }
מתי משתמשים בnew class?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
asco88 
חבר מתאריך 17.6.04
26757 הודעות
   09:56   17.04.14   
אל הפורום  
  7. טוב השתמשתי במילה Class שזאת מילה שמורה, טעות שלי.  
בתגובה להודעה מספר 6
 
ערכתי לאחרונה בתאריך 17.04.14 בשעה 10:00 בברכה, asco88
 
התכוונתי לכל מחלקה שתבחר להשתמש בה.

Person p = new Person()

פשוט את החלק השני

p = new Person()

תעשה רק לאחר שאתה יודע את הגודל:

דוגמא קצרה שעשיתי שתמחיש את הרעיון:

http://pastebin.com/jxiSAaty

נ.ב. צריך שתהיה פה דרך נורמאלית להציג קוד, זה נראה זוועה בCODE


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
danny444
חבר מתאריך 14.9.08
1980 הודעות
   10:40   18.04.14   
אל הפורום  
  8. תודה, אבל העניין הוא שברגע שאני מגדיר את המערכים בMAIN  
בתגובה להודעה מספר 7
 
   כלומר, מאתחל את הגודל שלהם שם, אין לי אפשרות לעבוד איתם בפונקציות אחרות.
כל הקוד בנוי תחת מחלקה אחת ואין לי פונקציות שמקבלות מערכים או פרמטרים כלשהם, הוא כולו בנוי על הרעיון שכל המשתנים הם גלובליים.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
inno3D
חבר מתאריך 21.4.02
4533 הודעות
   17:57   18.04.14   
אל הפורום  
  9. זה לא נכון מה שאתה אומר אחי..  
בתגובה להודעה מספר 8
 
   תעלה את הקוד


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
danny444
חבר מתאריך 14.9.08
1980 הודעות
   19:03   18.04.14   
אל הפורום  
  10. מכתב  
בתגובה להודעה מספר 9
 
   http://pastebin.com/t4A7deTL


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
inno3D
חבר מתאריך 21.4.02
4533 הודעות
   09:57   19.04.14   
אל הפורום  
  11. אוקי..  
בתגובה להודעה מספר 10
 
   אז מה שרשום שם שהכרזת על המערכים וגם אתחלת אותם


static double TheMainBoard()()=new double(Rank)(Games+1);


זה הכרזה ואיתחול
לפני שאתה יודע את הגודל, אל תאתחל את המערך.
רק תכריז עליו:


static double TheMainBoard()();


וכשאתה יודע את הגדלים, תאתחל אותו


TheMainBoard()()=new double(Rank)(Games+1);

כל הסוגריים מרובעים


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
danny444
חבר מתאריך 14.9.08
1980 הודעות
   10:01   19.04.14   
אל הפורום  
  12. כן, זה מה שניסיתי  
בתגובה להודעה מספר 11
 
   אבל האיתחול כמובן מתרחש בMAIN, ובזמן שאני מאתחל אני כבר לא עושה אותו סטטי, ואז לא אוכל להשתמש בו בפונקציות אחרות.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
inno3D
חבר מתאריך 21.4.02
4533 הודעות
   10:09   19.04.14   
אל הפורום  
  13. מה כוונה האתחול מתרחש ב MAIN?  
בתגובה להודעה מספר 12
 
   עד שאתה לא מאתחל, שום דבר לא קורה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
danny444
חבר מתאריך 14.9.08
1980 הודעות
   13:41   19.04.14   
אל הפורום  
  14. הכוונה היא להגדרת הגדלים של המערכים  
בתגובה להודעה מספר 13
 
   האתחול עצמו כמובן מתבצע בתחילת המחלקה, אבל אני הרי מבצע קריאה של הקובץ בהרצה עצמה (בשיטת הmain) ולאחר מכן כאשר אני מגדיר גודל מערכים בהתאם למה שנקרא בקבצים אני כבר מגדיר את זה בתור הmain, ואז אני לא יכול להשתמש במערכים הגלובליים שהגדרתי כי לא הוגדר להם גודל, כלומר אם אני ארצה לרוץ באחת השיטות האחרות שלי על אחד המערכים הללו שהגדרתי את הגודל שלהם בmain אני לא אוכל (אלא אם אשלח להם את המערכים בתור פרמטר)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net