לולאה באלכסון דרך מערך ג'אווה דו-ממדי

1. סקירה כללית

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

2. מערך דו מימדי

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

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

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

בדוגמה זו נקודת האמצע היא שלוש:

אורך int = twoDArray.length int diagonalLines = (אורך + אורך) - 1 int midPoint = (diagonalLines / 2) + 1

3. קבלת מדדי שורה ועמודה

כדי לעבור דרך כל המערך, אנו מתחילים לולאה מ -1 עד שמשתנה הלולאה קטן או שווה ל- קווים אלכסוניים מִשְׁתַנֶה.

עבור (int i = 1; i <= diagonalLines; i ++) {// כמה פעולות}

בואו ונציג גם את הרעיון של מספר הפריטים בשורה אלכסונית, ונקרא לזה itemsInDiagonal. לדוגמא, בשורה 3 בתרשים למעלה יש 3 פריטים (g, e, c) ובשורה 4 יש 2 (h, f). משתנה זה מוגדל ב- 1 בלולאה כאשר משתנה לולאה אני הוא פחות או שווה ל- midPoint. לאחר מכן הוא מופחת על ידי 1 אחרת.

לאחר תוספת או צמצום פריטיםInDiagonal, לאחר מכן יש לנו לולאה חדשה עם משתנה לולאה י. מִשְׁתַנֶה י מוגדל מ- 0 עד שהוא פחות מ- itemsInDiagonal.

לאחר מכן אנו משתמשים במשתני לולאה אני ו י כדי לקבל את מדדי השורות והעמודות. ההיגיון בחישוב זה תלוי אם משתנה הלולאה אני גדול מ midPointאו שלא. מתי אני גדול מ midPoint, אנו משתמשים גם ב- אורך משתנה לקביעת מדדי השורה והעמודה:

int rowIndex; int columnIndex; אם (i <= midPoint) {itemsInDiagonal ++; עבור (int j = 0; j <itemsInDiagonal; j ++) {rowIndex = (i - j) - 1; columnIndex = j; items.append (twoDArray [rowIndex] [columnIndex]); }} אחר {itemsInDiagonal--; עבור (int j = 0; j <itemsInDiagonal; j ++) {rowIndex = (אורך - 1) - j; columnIndex = (i - אורך) + j; items.append (twoDArray [rowIndex] [columnIndex]); }}

4. מסקנה

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

כמו תמיד, קוד המקור המלא של הדוגמה זמין ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found