פורסם 2007 בנובמבר 318 שנים שלום לכם .אני צריך לקלוט קלט מהמקלדת שהוא יהיה בטיפוס double ואם הוא מטיפוס אחר כמו אותיות וסימנים וכולי אני צריך לבקש מהמשתמש שיכניס עוד פעם קלט וחוזר חלילה איך אני עושה זה ? תודה .
פורסם 2007 בנובמבר 318 שנים אתה יכול להשתמש במחלקה Double, שם יש מתודה סטטית שממירה מSTRING לDOUBLE. אין אי אפשר נזרק אקספשן.
פורסם 2007 בנובמבר 318 שנים מחבר כלומר בהתחלה אני קולט מהמשתמש מחרוזת אחרי זה אני בודק אם ניתן להמיר את זה לדאבל : 1. אם כן - מצוין 2. אם לא אקלוט עוד פעם מחרוזת מהמשתמש ? ד"א יש דרך לעשות את זה רק עם מחלקות Scanner ו String ? ועוד משהו nextDoublepublic double nextDouble() Scans the next token of the input as a double. This method will throw InputMismatchException if the next token cannot be translated into a valid double value. If the translation is successful, the scanner advances past the input that matched. If the next token matches the Float regular expression defined above then the token is converted into a double value as if by removing all locale specific prefixes, group separators, and locale specific suffixes, then mapping non-ASCII digits into ASCII digits via Character.digit, prepending a negative sign (-) if the locale specific negative prefixes and suffixes were present, and passing the resulting string to Double.parseDouble. If the token matches the localized NaN or infinity strings, then either "Nan" or "Infinity" is passed to Double.parseDouble as appropriate. Returns: the double scanned from the input Throws: InputMismatchException - if the next token does not match the Float regular expression, or is out of range NoSuchElementException - if the input is exhausted IllegalStateException - if this scanner is closed nextDouble () בעצמו זורק אקספשיון אם הנתון לא דאבל .אז אולי לא צריך ללכת רחוק . איך אני עושה שכאשר נזרק אקפשיון אני חוזר לתחילת הלולאה כדי לקלוט קלט מהמשתמש ?
פורסם 2007 בנובמבר 318 שנים משהו כזה:boolean g = false;double i=0;while(!g){ try { g=true; Scanner sc = new Scanner(System.in); i = sc.nextDouble(); } catch(InputMismatchException e) { g=false; System.out.println("bad"); }}System.out.println(i);(אני שונא לעבוד עם ה scanner הזה)אתה יכול גם ככה:Console c = System.console();boolean g = false;double i=0;while(!g){ try { g=true; i = Double.parseDouble(c.readLine()); } catch(NumberFormatException e) { g=false; System.out.println("bad"); }}System.out.println(i);
פורסם 2007 בנובמבר 318 שנים מחבר אחלה תודה על ההסבר המפורט בקורס שלי עוד לא הגענו ל try catch אז זאת אומרת שאי אפשר לוודא שהקלט הוא דאבל ללא שימוש ב try catch ?
פורסם 2007 בנובמבר 318 שנים כשאתה קולט בג'אווה אתה צריך לתרגם את הקלט לטיפוס מסויים, ברגע שתנסה לתרגם משהו ללא הצלחה תיזרק חריגה.לכן אתה צריך לטפל בה.הלולאה שכתבתי מנסה לתרגם את הקלט ל double. אם היא נכשלת הפונקציה זורקת חריגה, אני תופס אותה ונותן ללולאה לרוץ שוב.ד"א, נשמע קצת מוזר שהתחלתם כבר לעבוד עם קלט לפני שלמדתם לטפל בחריגות.
פורסם 2007 בנובמבר 318 שנים מחבר אנחנו רק בהתחלה ובטח ילמדו אותנו את זה בעתיד . ד"א את try catch ראיתי את זה באיזה ספר באנגלית על ג'אווה ולא כל כך הבנתי .. וההסבר שלך הסביר לי את כל העינין הזה תודה
פורסם 2007 בנובמבר 318 שנים double a=input.nextDouble ();if (a!=(chr)a );system.out.print (a);else a=input.nextDouble ();
פורסם 2007 בנובמבר 318 שנים מחבר הבעיה היא שאתה לא תגיע ל if , אם תכניס תו שאינו יכול להיכנס להגדרה של דאבל . ברגע שתכניס תו במקום מספר , יזרק לך אקספשיון שיעצור את התוכנית .
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.