string in switch in java

ogispan

New member
string in switch in java

שלום לכולם! אני רוצה להשתמש בפקודה של SWITCH..... CASE אני כותב את הפקודה בצורה הבאה: switch (str) { case "ooo" :{} } כאשר str הוא משתנה מסוג string. כשאני מנסה להריץ את התוכנית אני מקבל הודעת שגיאה שאי אפשר להמיר אס המחרוזת str לאינטג'ר... זה כאילו שהמחרוזת ooo נילקחה והומרה למספר אשר מושווה עם str. מישהו מכיר את הבעיה? אני עושה משהו לא נכון? (מדובר בג'אווה) תודה רבה לכולם!!!
 

ogispan

New member
אני עדיין לא מוצא את הטעות....

נכון שלא שמתי BREAK, אבל זה לא מה שיפתור את הבעיה.... עדיין אני מקבל הודעה שהמשתנה שלי לא יכול להפוך לאינטג'ר... למרות שאין לי שום אינטג'ר שם. יש עוד הצעות? :)
 

The Albatross

New member
בג'אווה

משפטי switch יכולים להיות מופעלים אך ורק על טיפוסי נתונים בסיסיים, שניתן להמירם לint.
 

ogispan

New member
אם כן....

איך אני יכול לעשות משפט SWITCH על סטרינג? אני אמור לקבל פקודה מהמשתמש כמו "צור" "מחק" "חפש" ואז לבצע את הפעולה... לוותר על SWITCH ולהתחיל לעבוד בתנאים? IF? ג'אווה לא אמור להיות יותר טוב משפות אחרות? :)
 

The Albatross

New member
אני חושב שכן.

מזמן לא תכנתתי בג'אווה, ואין לי מושג אם יש דרך יותר יעילה.
 

_alon_

New member
אם כך

1. אולי כדאי ליצור מערך של strings או איזה hash שמכיל string ו-int ואז על ה-int שתקבל תוכל לעשות switch. 2. אם אני זוכר נכון יש ל-String פונקציה בשם hashCode שמחזירה לך מספר hash שיחודי לאותו String (ע"י פולינום) ואז על זה תוכל לבצע switch. 3. דרך אגב גם ב- ++C עושים switch על מספרים בלבד.
 

voguemaster

New member
לא רק בג'אווה! switch... case

לגבי משפטי switch ... case. הערך שמבוצע עליו ה-switch חייב להיות טיפוס נתונים בסיסי שלם. מלבד זאת, הערכים שמוצבים במשפטי ה-case לא יכולים להיקבע בזמן ריצה אלא חייבים להיות קבועים מספריים (או קבועים ע"י DEFINE) ולא שום דבר אחר. בכדי לעקוף את המגבלות האלו נהוג להשתמש במשפטי if .. else if .. else if וכן הלאה. לא לשכוח, switch עושה *בדיוק* את אותן הפעולות אבל הוא צורה נוחה יותר, זה הכל.
 

justme5

New member
../images/Emo45.gif

לחיזוק: http://forum.java.sun.com/thread.jsp?thread=208064&forum=31&message=2576168
 
למעלה