ABA


"שאלה קטנה בקשר לJava וScanner"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #21292 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 21292
Zeet3x  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.2.12
9976 הודעות, 24 פידבק, 18 נקודות
   00:20   05.06.15   
אל הפורום  
  שאלה קטנה בקשר לJava וScanner  
 
   יש איזה "באג" כלשהו בJava כאשר אני קולט משתנה int ואז משתנה String בעזרת הפקודה sc.nextLine() הוא לא נותן לי להזין מחרוזת. רק אם אני שם sc.nextLine() ריק בין קליטת הint לקליטת המחרוזת הוא מסתדר. לדוגמא מקרה לא תקין:

System.out.println("Please enter number");
int num = sc.nextInt()

System.out.println("Please enter String");
String str = sc.nextLine();

ודוגמא למקרה תקין:

System.out.println("Please enter number");
int num = sc.nextInt()
sc.nextLine();
System.out.println("Please enter String");
String str = sc.nextLine();

מישהו יודע להסביר ת'תופעה?


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

  האשכול     מחבר     תאריך כתיבה     מספר  
  תסמונת שפת C.. inno3D 05.06.15 12:07 1
     אחלה תודה! Zeet3x  05.06.15 17:31 2
  במקרה הכי גרוע gge 14.06.15 11:31 3

       
inno3D
חבר מתאריך 21.4.02
4533 הודעות, דרג אמינות חבר זה
   12:07   05.06.15   
אל הפורום  
  1. תסמונת שפת C..  
בתגובה להודעה מספר 0
 
   אתה קולט גם תו שהוא מספר וגם את התו ENTER..
nextLine מחכה לתו ENTER אז חשוב לנקות את הבאפר לפני שאתה משתמש בו


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Zeet3x  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.2.12
9976 הודעות, 24 פידבק, 18 נקודות
   17:31   05.06.15   
אל הפורום  
  2. אחלה תודה!  
בתגובה להודעה מספר 1
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
gge
חבר מתאריך 3.7.06
684 הודעות, דרג אמינות חבר זה
   11:31   14.06.15   
אל הפורום  
  3. במקרה הכי גרוע  
בתגובה להודעה מספר 0
 
   אתה תמיד יכול לקלוט
nextLine() ואז לעשות בדיקה אם הוא באמת מספר ע"י try

boolean takeNum = true
while (takeNum){
try{
int num = Integer.parseInt(sc.nextLine());
takeNum = false
System.out.printf ("Succesfully entered %d", num);
}catach (Exception e){
System.out.printf ("Please enter a valid num");
}
}

כי בעיקרון ה"סיכון" שאתה לוקח כאן זה שמשתמש יכניס לך תו שהוא לא מספר ואז יש סיכוי שהתוכנה שלך תקבל Exception



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

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

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



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