ABA


"צריך עזרה בJava - רקורסיות"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #21246 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 21246
Zeet3x  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.2.12
9976 הודעות, 24 פידבק
   19:55   13.05.15   
אל הפורום  
  צריך עזרה בJava - רקורסיות  
 
  

אז אני צריך לממש פונקציה רקורסיבית(!) שמדפיסה את התפריט בתחילת התוכנית, וכל פעם מחדש.
מה שחשבתי לעשות זה לבנות פונקצית void בשם printMenu(Scanner sc) ואז בתוך הפונקציה הזאת לבנות switch שמכסה את כל הקייסים (כל האפשרויות בתפריט). בעקרון זה עובד טוב, תמיד חוזר חזרה והכל.
מה שאני חושש ממנו, זה שמרגיש לי שהפונקציה הזאת נהיית נורא מרכזית.. כאילו הכל עובד מתוכה. אתם חושבים שזה בסדר הרעיון הזה?

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


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

  האשכול     מחבר     תאריך כתיבה     מספר  
  למה אתה צריך רקורסיה? IDAN_500  13.05.15 21:19 1
  איך בכלל רקורסיה רלוונטית כאן? ShocKi  13.05.15 21:24 2
     זה לא כל העבודה. Zeet3x  13.05.15 21:34 3
  תעשה משהו כזה: VeNom  13.05.15 22:45 4
     אני חושב שזה מה שהתכוונתי Zeet3x  13.05.15 23:09 5
         כן משהו כזה..אז כל קייס תקרא לפונקציה שתבצע.. VeNom  14.05.15 07:40 6
             אחלה תודה Zeet3x  14.05.15 08:22 7

       
IDAN_500 
חבר מתאריך 11.12.03
2321 הודעות
   21:19   13.05.15   
אל הפורום  
  1. למה אתה צריך רקורסיה?  
בתגובה להודעה מספר 0
 
   על פניו זה לא רשום לך בדרישות,
אתה יכול לממש בדיוק את אותו דבר עם לולאה ודגל (וכמובן כל ה switch ישב בלולאה)...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ShocKi  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.3.02
20171 הודעות, 10 פידבק
   21:24   13.05.15   
אל הפורום  
  2. איך בכלל רקורסיה רלוונטית כאן?  
בתגובה להודעה מספר 0
 
  


קאש-באק ישראלי: https://www.cashback.co.il/?uref=33330
קאשבק לAsos ואמזון דרך Ebates: https://goo.gl/MX87Y7 - מקבלים 10$ לאחר שימוש ראשון.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Zeet3x  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.2.12
9976 הודעות, 24 פידבק
   21:34   13.05.15   
אל הפורום  
  3. זה לא כל העבודה.  
בתגובה להודעה מספר 2
 
   בתחילת העבודה רשום שאסור להשתמש בלולאות.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
VeNom  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 7.6.02
7922 הודעות, 1 פידבק
   22:45   13.05.15   
אל הפורום  
  4. תעשה משהו כזה:  
בתגובה להודעה מספר 0
 
   פסאדו תכנות:


public void Menu(){
Write("1. Add String");
....
Write("8. Exit");
int num = ReadLine();
bool keepGoing = DoSomethingWithNum(num);
if(keepGoing)
Menu(); // recursive
}

public bool DoSomethingWithNum(int num){
// switch case and do something(each option = new method) return false if you need to break the menu loop
}


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Zeet3x  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.2.12
9976 הודעות, 24 פידבק
   23:09   13.05.15   
אל הפורום  
  5. אני חושב שזה מה שהתכוונתי  
בתגובה להודעה מספר 4
 
   הנה מה שעשיתי בתור התחלה
שמאל|

public static void print_menu(Scanner sc, String strings)
{
String str;
int choice, num;
System.out.println("Please choose an option:\n1. Add String\n2. Remove Duplicates\n3. Narrow a String\n4. Maximum Subset\n5. Mini Scrabble\n6. Crossword Puzzle\n7. Print Strings\n8. Exit");
choice=sc.nextInt();
switch (choice)
{
default:
System.out.println("Illegal number, please re-enter a number:");
break;
case 8:
System.out.println("Goodbye!");
break;
case 1:
System.out.println("Please choose a string slot:");
num=sc.nextInt();
sc.nextLine();
System.out.println("Please enter a string:");
str=sc.nextLine();
addString(strings, num, str);
break;
case 7:
printStrings(strings, 0);
break;
}
if(choice != 8)
print_menu(sc, strings);

מה שפשוט "מדאיג אותי" זו העובדה שכל הקוד נמצא בתוך הפונקציה הזאת.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
VeNom  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 7.6.02
7922 הודעות, 1 פידבק
   07:40   14.05.15   
אל הפורום  
  6. כן משהו כזה..אז כל קייס תקרא לפונקציה שתבצע..  
בתגובה להודעה מספר 5
 
   ואז זה אמור להיראות משהו כמו:



switch(choice)
{
case1:
doSomething1();
break;
case2:
doSomething2();
break;
//////
}


תסדר את המספור של הקייסים שיופיע לי הסדר כאשר הדיפולט בסוף..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Zeet3x  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.2.12
9976 הודעות, 24 פידבק
   08:22   14.05.15   
אל הפורום  
  7. אחלה תודה  
בתגובה להודעה מספר 6
 
   ובקשר למספור הקייסים צודק אני אסדר


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

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

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



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