Java/מערכים: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
אין תקציר עריכה
תגיות: חשד למילים בעייתיות עריכה ממכשיר נייד עריכה דרך האתר הנייד
אין תקציר עריכה
תגיות: עריכה ממכשיר נייד עריכה דרך האתר הנייד
שורה 5:
מנור החתיך
 
נמרוד 0
==פעולות נפוצות==
נראה כעת כיצד מתבצעות הפעולות החיוניות על מערך. נראה זאת עם דוגמה של התוכנית שהזכרנו בתחילת הפרק - חישוב של כמות משקעים יומית.
 
===קלט===
ישנן כמה דרכים להזין מידע למערך. את הדרך הראשונה כבר ראינו - להכניס מידע בזמן האתחול. דרך פשוטה אחרת היא הזנה של המידע כמו במשתנים רגילים: {{קוד בשורה|<nowiki>arr[i] = value;</nowiki>}}, כאשר arr הוא שם המערך, i הוא מספר התא, ו-value - הערך אותו אנחנו רוצים להכניס. נראה דוגמה להכנסת מידע למערך:
<source lang = "java">
double[] arr = new double[30];
Scanner s = new Scanner(System.in);
for(int i=0; i<30; i++) {
System.out.println("Enter climate data for day "+i+": ");
arr[i]=s.nextDouble();
}
</source>
שימו לב שכאן, בשורה הראשונה שהתכנה תוציא היא תבקש דאטא עבור יום 0 ולא יום 1.
במידה ואתם רוצים שהיא תבקש דאטא עבור יום 1 , פשוט שנו את ערך ה-i
 
===פלט===
פלט של המערך מתבצע תמיד בצורה של תא אחרי תא, כפי שכבר ראינו. לא ניתן להדפיס מערך בשלמותו על ידי פקודה בודדת. נראה דוגמה לקטע קוד שמטרתו לחשב את הממוצע של איברי המערך, אליו הכנסנו קודם את הנתונים.
<source lang = "java">
double average=0;
for(int i=0; i<30; i++) {
average+=arr[i];
}
average=average/30;
System.out.println("Average is "+average);
</source>
 
===העתקה===
גם העתקה של מערך צריכה להתבצע תא אחרי תא. שימו לב: מאחר שמערך הוא אובייקט, ניתן לכתוב פקודה כמו {{קוד בשורה|<nowiki>arr2=arr;</nowiki>}} (בהנחה ששני אלו הם מערכים) - התוכנית תרוץ כשורה, ואם נבדוק את תוכן המערכים, נראה ש-arr ו-arr2 אכן זהים. עם זאת, ההעתקה אינה אמיתית - arr2 יכיל רק '''הפנייה''' למערך arr. אם נשנה ערך של תא מסויים במערך arr - הוא ישתנה ב-arr2. לכן, אין להשתמש בשיטת ההעתקה הזו. שימוש בה יכול להביא לתקלות רבות. בדוגמה הבאה אנו מעתיקים את הערכים שבמערך המקורי למערך חדש, arr2, שכל נתון בו שווה לחצי מהערך המקביל במערך המקורי.
<source lang = "java">
double[] arr2 = new double[30];
for(int i=0; i<30; i++) {
arr2[i]=arr[i]*0.5;
}
</source>
 
==מערכים משוכללים יותר==