ABA


"האם יש פקודה שמקבילה ל switch בשביל string? ב JAVA?"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15616 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15616
Yariv-H לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 24.3.02
5856 הודעות, 1 פידבק
   14:44   14.12.09   
אל הפורום  
  האם יש פקודה שמקבילה ל switch בשביל string? ב JAVA?  
 
   אני מחפש פקודה שתעשה את אותו הדבר כמו ש switch עושה רק לגבי סטרינג..

יש לי משתנה שמכניסים לתוכו נניח שם

האם יש דרך יותר פשוטה מלעשות כול פעם כאשר לדוג
a מוגדר כ string


if (a.equals("aaaa"))
{
..
...
}
if (a.equals("bbbb")
{
...
...
}

יש משהוא מקביל כמו switch ? רק לסטרינג?
תודה מראש.. ( מקווה שהייתי ברור.. =])



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

  האשכול     מחבר     תאריך כתיבה     מספר  
  SWITCH עובד על כל טיפוס. ronen333  14.12.09 18:12 1
     ספציפית בג'אווה אולי, אבל תנסה את זה פעם בC ;) DLN 15.12.09 01:28 2
         הוא שאל על גאווה אז עניתי לו על גאווה. ronen333  15.12.09 09:37 3
             לא שאלתי בלי לבדוק.... Yariv-H 20.12.09 11:25 4
                 אחרי חיפוש קצרצר בגוגל גילתי ronen333  22.12.09 18:01 5
                     =] אחלה תודה Yariv-H 23.12.09 21:32 6
                     לא מבין את ההיגיון מאחורי זה, שמשון פישטונה 23.12.09 22:24 7
                         כן יש מצב זה הדבר הכי חרא שאי פעם ראיתי בשפת היי לבל DLN 23.12.09 22:36 8
                             אני מאמין שעשו את הסוויטץ'-קייס רק ל-int/enum מ-2 סיבות ldan192  24.12.09 11:40 9
                                 זה ממש מעפן... DLN 25.12.09 13:35 10
                                     בעניי #C שפה טובה בכמה רמות מאשר JAVA ldan192  25.12.09 14:27 11
                                         דווקא נכנסה בסדר גמור לדעתי DLN 25.12.09 21:32 12
  מכתב Deuce  27.12.09 03:43 13

       
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   18:12   14.12.09   
אל הפורום  
  1. SWITCH עובד על כל טיפוס.  
בתגובה להודעה מספר 0
 
   אני לא מבין מה הבעיה.. =/


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DLN
חבר מתאריך 20.4.07
15884 הודעות
   01:28   15.12.09   
אל הפורום  
  2. ספציפית בג'אווה אולי, אבל תנסה את זה פעם בC ;)  
בתגובה להודעה מספר 1
 
   אתה בפועל תשווה בין 2 מצביעים סטטיים לdata section שלך, מה שלא יעשה כלום.
ספציפית לג'אווה אתה צודק, וזה בגלל שלטיפוס סטרינג של ג'אווה יש מתודות ל==.
גם במחלקות סטרינג מסוימות בC++ אני מניח שזה ככה, אבל בSWITCH כמו שאלוהים ברא אותו אין כזה דבר


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   09:37   15.12.09   
אל הפורום  
  3. הוא שאל על גאווה אז עניתי לו על גאווה.  
בתגובה להודעה מספר 2
 
   בC אין טיפוס נתונים כזה מחרוזת. רק מערך תווים שמסיים בNULL TERMINATOR ... אז מן הסתם.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Yariv-H לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 24.3.02
5856 הודעות, 1 פידבק
   11:25   20.12.09   
אל הפורום  
  4. לא שאלתי בלי לבדוק....  
בתגובה להודעה מספר 3
 
  

public class cxz {

/**
* @param args
*/
public static void main(String args) {
// TODO Auto-generated method stub

String temp ;
temp = "accc";

switch (temp)
{
case accc:
break;
.
.
.
.
.
.
.
.

}
}
}

לא עובר קומפילציה

Cannot switch on a value of type String. Only convertible int values or enum constants are permitted



                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   18:01   22.12.09   
אל הפורום  
  5. אחרי חיפוש קצרצר בגוגל גילתי  
בתגובה להודעה מספר 4
 
   שבJAVA אינך יכול לעשות SWITCH CASE על סטרינג (ובC# אתה כן! חע!)

You can only switch on integer constants (static final int) or literals.

אז כן.. אתה לא יכול- JAVA blows


=P

פתרון שהציעו שם זה לעבוד עם המטודה hashcode שהמחלקה String מציעה. אני אישית רואה את זה כבחירה רעה.. עדיף לך כבר לעשות IFים.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Yariv-H לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 24.3.02
5856 הודעות, 1 פידבק
   21:32   23.12.09   
אל הפורום  
  6. =] אחלה תודה  
בתגובה להודעה מספר 5
 
  



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

   22:24   23.12.09   
אל הפורום  
  7. לא מבין את ההיגיון מאחורי זה,  
בתגובה להודעה מספר 5
 
   ממתי Switch שכביכול אמור ליהיות חלק מהControl Structure ואמור לעבוד בצורה זהה לif נותן חשיבות לטיפוס.

הזוי.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DLN
חבר מתאריך 20.4.07
15884 הודעות
   22:36   23.12.09   
אל הפורום  
  8. כן יש מצב זה הדבר הכי חרא שאי פעם ראיתי בשפת היי לבל  
בתגובה להודעה מספר 7
 
   מה הקטע? יש איזה ממשק Equals() לסטרינגים בJAVA אני מניח, אז מה הבעיה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   11:40   24.12.09   
אל הפורום  
  9. אני מאמין שעשו את הסוויטץ'-קייס רק ל-int/enum מ-2 סיבות  
בתגובה להודעה מספר 8
 
1. למנוע שגיאות של המתכנת. במידה והוא שוכח לדרוס את equals (שהוא ירש מ-object, לצורך העניין), הקוד יכול להיות פחות noob-free.
מאותה סיבה גם אין ל-double. שלא תהיה בעיית דיוקים בנקודה העשרונית.
2. יתכן גם שאופטימיזציות, למרות שזה פחות מתאים ל-Java.

אבל כמו שאמרת, ברגע ש-equals מוגדרת, אין סיבה שלא יהיה אפשר לגרום לזה לעבוד.


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DLN
חבר מתאריך 20.4.07
15884 הודעות
   13:35   25.12.09   
אל הפורום  
  10. זה ממש מעפן...  
בתגובה להודעה מספר 9
 
   אין על CPP בדברים האלה תכלס,
למרות שC# עושה ת'עבודה מצוין גם


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ldan192 
חבר מתאריך 14.9.08
95119 הודעות
   14:27   25.12.09   
אל הפורום  
  11. בעניי #C שפה טובה בכמה רמות מאשר JAVA  
בתגובה להודעה מספר 10
 
חבל שהיא לא נכנסה מספיק חזק לשוק (תאשים אגב את ה-firefox בזה).


בברכה,
עידן


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
DLN
חבר מתאריך 20.4.07
15884 הודעות
   21:32   25.12.09   
אל הפורום  
  12. דווקא נכנסה בסדר גמור לדעתי  
בתגובה להודעה מספר 11
 
   אני באמת לא חושב שיש אנשים שחושבים שג'אווה שימושית למשהו חוץ מפיתוחים קרוס-פלטפורם


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Deuce 
חבר מתאריך 1.9.08
6225 הודעות
   03:43   27.12.09   
אל הפורום  
  13. מכתב  
בתגובה להודעה מספר 0
 

You must understand that switch-case is used for primitive types. String is not a primitive type. In order to prevent user's bad behavior, e.g. if it allows support in primitive types, so user could @override object's equal so:
1. Bad Use - Bad @override of equal will result in a switch-case which does not reflects switch-case general purpose.
2. Compilation Feature - It's compiler-based. If we do want to allow override of equal, complier must test this condition. It becomes very complicated while switch-case is a very tiny feature.

My answer is directly related to Java Tech' - Java is a concept of preventing bad behavior. C cannot allow it because it's not OOP based (SO no @override and no equal). In some free handed languages such as EIFFEL I think that switch-case does allow to compare more types.

BTW - In Java 7 there are chances to this feature to be upgraded.

My personal opinion: It's not so important. Switch-Case versus If - give me a break ...







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

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

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



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