המרת מחרוזת לשלם בגרובי

1. סקירה כללית

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

2. ליהוק עם כפי ש

השיטה הראשונה בה אנו יכולים להשתמש להמרה היא כפי ש מילת מפתח, שהיא זהה לקרוא ל- כיתות asType () שיטה:

@Test void givenString_whenUsingAsInteger_thenConvertToInteger () {def stringNum = "123" מספר שלם צפוי מספר שלם = 123 שלם שלם מספר שלם = מחרוזת מספר כפי שמספר מספר שלם שווה ערך (שלם מספר, צפוי שלם)}

כמו האמור לעיל, אנו יכולים להשתמש כמו int:

@Test בטל givenString_whenUsingAsInt_thenConvertToInt () {def stringNum = "123" int expectInt = 123 int intNum = stringNum כ int assertEquals (intNum, expectInt)}

3. toInger

שיטה נוספת היא מהסיומת של Groovy JDK עבור java.lang.CharSequence:

@Test בטל givenString_whenUsingToInteger_thenConvertToInteger () {def stringNum = "123" int expectInt = 123 int intNum = stringNum.toInteger () assertEquals (intNum, expectedInt)}

4. מספר שלם # parseInt

דרך שלישית היא להשתמש השיטה הסטטית של ג'אווה Integer.parseInt ():

@Test void givenString_whenUsingParseInt_thenConvertToInteger () {def stringNum = "123" int expectInt = 123 int intNum = Integer.parseInt (stringNum) assertEquals (intNum, expectInt)}

5. מספר שלם # intValue

שיטה חלופית היא ליצור חדש מספר שלם התנגד וקרא לו intValue שיטה:

@Test בטל givenString_whenUsingIntValue_thenConvertToInteger () {def stringNum = "123" int expectedInt = 123 int intNum = Integer (stringNum) חדש. IntValue () assertEquals (intNum, expectedInt)}

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

@Test בטל givenString_whenUningNewInteger_thenConvertToInteger () {def stringNum = "123" int expectInt = 123 int intNum = Integer (stringNum) חדש assertEquals (intNum, expectInt)}

6. מספר שלם # valueOf

דומה ל Integer.parseInt (), אנו יכולים גם להשתמש בשיטה הסטטית של Java מספר שלם # valueOf:

@Test בטל givenString_whenUsingValueOf_thenConvertToInteger () {def stringNum = "123" int expectInt = 123 int intNum = Integer.valueOf (stringNum) assertEquals (intNum, expectedInt)}

7. פורמט עשרוני

ולשיטה האחרונה שלנו, אנו יכולים ליישם את Java פורמט עשרוני מעמד:

@Test בטל givenString_whenUsingDecimalFormat_thenConvertToInteger () {def stringNum = "123" int expectedInt = 123 DecimalFormat decimalFormat = DecimalFormat new ("#") int intNum = decimalFormat.parse (stringNum) .intValue () assertEnt

8. טיפול בחריגים

כך, אם ההמרה נכשלת, כמו שיש תווים שאינם מספריים, א NumberFormatException ייזרק. בנוסף, במקרה בו חוּט הוא ריק, NullPointerException ייזרק:

@Test (צפוי = NumberFormatException.class) בטל givenInvalidString_whenUsingAs_thenThrowNumberFormatException () {def invalidString = "123a" invalidString כ- Integer} @Test (הצפוי = NullPointerException.class) בטל נתון NullString_whento_Big_Star_This_By_Bet

כדי למנוע זאת, אנו יכולים להשתמש ב שיטת isInteger:

@Test void givenString_whenUsingIsInteger_thenCheckIfCorrectValue () {def invalidString = "123a" def validString = "123" def invalidNum = invalidString? .IsInteger ()? invalidString כמו מספר שלם: שגיאת def correctNum = validString? .isInteger ()? validString כמו מספר שלם: false assertEquals (false, invalidNum) assertEquals (123, correctNum)}

9. סיכום

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

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

כרגיל, ניתן למצוא את כל דוגמאות הקוד ב- GitHub.