עבור לתוכן

ג'אווה import מקובץ class

Featured Replies

פורסם

שלום לכם .

אני צריך לקלוט קלט מהמקלדת שהוא יהיה בטיפוס double

ואם הוא מטיפוס אחר כמו אותיות וסימנים וכולי אני צריך לבקש מהמשתמש שיכניס עוד פעם קלט וחוזר חלילה

איך אני עושה זה ? תודה .

פורסם

אתה יכול להשתמש במחלקה Double, שם יש מתודה סטטית שממירה מSTRING לDOUBLE. אין אי אפשר נזרק אקספשן.

פורסם
  • מחבר

כלומר בהתחלה אני קולט מהמשתמש מחרוזת

אחרי זה אני בודק אם ניתן להמיר את זה לדאבל : 1. אם כן - מצוין 2. אם לא אקלוט עוד פעם מחרוזת מהמשתמש ?

ד"א יש דרך לעשות את זה רק עם מחלקות Scanner ו String ?

ועוד משהו

nextDouble

public 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 () בעצמו זורק אקספשיון אם הנתון לא דאבל .אז אולי לא צריך ללכת רחוק .

איך אני עושה שכאשר נזרק אקפשיון אני חוזר לתחילת הלולאה כדי לקלוט קלט מהמשתמש ?

פורסם

משהו כזה:

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);

פורסם
  • מחבר

אחלה תודה על ההסבר המפורט :xyxthumbs:

בקורס שלי עוד לא הגענו ל try catch

אז זאת אומרת שאי אפשר לוודא שהקלט הוא דאבל ללא שימוש ב try catch ?

פורסם

כשאתה קולט בג'אווה אתה צריך לתרגם את הקלט לטיפוס מסויים, ברגע שתנסה לתרגם משהו ללא הצלחה תיזרק חריגה.

לכן אתה צריך לטפל בה.

הלולאה שכתבתי מנסה לתרגם את הקלט ל double. אם היא נכשלת הפונקציה זורקת חריגה, אני תופס אותה ונותן ללולאה לרוץ שוב.

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

פורסם
  • מחבר

אנחנו רק בהתחלה ובטח ילמדו אותנו את זה בעתיד .

ד"א את try catch ראיתי את זה באיזה ספר באנגלית על ג'אווה ולא כל כך הבנתי ..

וההסבר שלך הסביר לי את כל העינין הזה תודה :xyxthumbs:

פורסם

double a=input.nextDouble ();
if (a!=(chr)a );
system.out.print (a);
else
a=input.nextDouble ();

פורסם
  • מחבר

הבעיה היא שאתה לא תגיע ל if , אם תכניס תו שאינו יכול להיכנס להגדרה של דאבל .

ברגע שתכניס תו במקום מספר , יזרק לך אקספשיון שיעצור את התוכנית .

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים