Java int üçün inteqrayı necə dəyişdirmək olar?

Java int üçün String necə dəyişdirmək olar?

Mənim simli yalnız nömrələrdən ibarətdir və mən təmsil etdiyim nömrəni qaytarmaq istəyirəm.

Məsələn, "1234" simli nəzərə alınsa, nəticə 1234 saylı rəqəm olmalıdır.

2710
07 апр. Bilinməyən istifadəçi tərəfindən təyin 07 Apr 2011-04-07 21:27 '11 at 21:27 2011-04-07 21:27
@ 43 cavab
  • 1
  • 2
 String myString = "1234"; int foo = Integer.parseInt(myString); 

Java sənədlərinə NumberFormatException , bu funksiyanı bir NumberFormatException yarada biləcəyiniz bir NumberFormatException , NumberFormatException , əlbəttə, idarə etmək lazımdır:

 int foo; try { foo = Integer.parseInt(myString); } catch (NumberFormatException e) { foo = 0; } 

(Varsayılan olaraq, bu etibarsız sayı 0 , ancaq istədiyiniz halda başqa bir şey edə bilərsiniz.)

Bundan əlavə, Java 8 Optional birləşməni bir int üçün Ints etmək üçün güclü və qısa şəkildə təmin edən Guava kitabxanasından Ints metodundan istifadə edə bilərsiniz:

 import com.google.common.primitives.Ints; int foo = Optional.ofNullable(myString) .map(Ints::tryParse) .orElse(0) 
3759
07 апр. Rob Hruska tərəfindən verilmiş cavab 07 Apr 2011-04-07 21:29 '11 at 21:29 2011-04-07 21:29

Məsələn, bunlar iki yol:

 Integer x = Integer.valueOf(str); // or int y = Integer.parseInt(str); 

Bu üsullar arasında bir fərq yoxdur:

border=0
  • valueOf yeni və ya cached java.> valueOf qaytarır
  • parseInt bir int ibtidai qaytarır.

Bütün hallarda Short.valueOf : Short.valueOf / parseShort , Long.valueOf / parseLong və s.

628
07 апр. cavab verildi 07 May 2011-04-07 21:36 '11 at 21:36 2011-04-07 21:36

Eləcə də nəzərə almaq üçün çox vacib bir nöqtədir ki, Integer parser javadoc-da göstərildiyi kimi bir NumberFormatException salır.

 int foo; String StringThatCouldBeANumberOrNot = "26263Hello"; //will throw exception String StringThatCouldBeANumberOrNot2 = "26263"; //will not throw exception try { foo = Integer.parseInt(StringThatCouldBeANumberOrNot); } catch (NumberFormatException e) { //Will Throw exception! //do something! anything to handle the exception. } try { foo = Integer.parseInt(StringThatCouldBeANumberOrNot2); } catch (NumberFormatException e) { //No problem this time, but still it is good practice to care about exceptions. //Never trust user input :) //Do something! Anything to handle the exception. } 

Bu istisnayı idarə etmək vacibdir, ayrı-ayrı dəlilləri tam dəyərlər əldə etməyə və ya dinamik şəkildə başa düşməyə çalışır.

230
30 апр. Əli Akdurak tərəfindən aprelin 30-da cavab verildi 2013-04-30 09:54 '13 at 9:54 2013-04-30 09:54

Əllə olun:

 public static int strToInt( String str ){ int i = 0; int num = 0; boolean isNeg = false; //Check for negative sign; if it there, set the isNeg flag if (str.charAt(0) == '-') { isNeg = true; i = 1; } //Process each character of the string; while( i < str.length()) { num *= 10; num += str.charAt(i++) - '0'; //Minus the ASCII code of '0' to get the value of the charAt(i++). } if (isNeg) num = -num; return num; } 
83
11 сент. Sep 11-də Billz tərəfindən verilmiş cavab 2013-09-11 05:08 '13 at 5:08 'da 2013-09-11 05:08

Hal-hazırda, yuxarıda olanlar kimi müəyyən ifadələrdən istifadə edə bilməyəcəyəm və ASCII masasına baxa bilmədiyim bir kollec tapşırığını edirəm, bunu bacardı. Bu daha mürəkkəb bir koddur, ancaq mənim kimi məhdud olanlara kömək edə bilər.

Birincisi, bu işdə bir ədəd simli bir giriş əldə etməkdir; Mən bunu String number adlandırdım və bu halda 12 nömrəli rəqəmi göstərəcəyəm, buna görə də String number = "12";

Başqa bir məhdudiyyət təkrarlanan döngələrdən istifadə edə bilməməyimdir, buna görə də loop for istifadə edə bilməzsiniz (mükəmməl olardı). Bu, bizi bir az məhdudlaşdırır, amma yenə də bu hədəfi. Yalnız iki rəqəmə (son iki rəqəm alaraq) ehtiyac olduğundan, sadə bir qərar verildi:

  // Obtaining the integer values of the char 1 and 2 in ASCII int semilastdigitASCII = number.charAt(number.length()-2); int lastdigitASCII = number.charAt(number.length()-1); 

Kodları olan, biz yalnız masa baxmaq və lazımi düzəlişlər etmək lazımdır:

  double semilastdigit = semilastdigitASCII - 48; //A quick look, and -48 is the key double lastdigit = lastdigitASCII - 48; 

İndi niyə ikiqat? Bəli, həqiqətən "qəribə" addım olduğundan. Hal-hazırda iki əkiz var: 1 və 2, amma biz onu 12-ə çevirməliyik, biz edə biləcəyimiz riyazi əməliyyat var.

Sonuncu (lastdigit) 10 modulo 2/10 = 0.2 (buna görə də ikiqat) aşağıdakı kimi bölünür:

  lastdigit = lastdigit/10; 

Bu ədəd olan yalnız bir oyun. Son rəqəmi ondalıka çevirdik. Amma nə olursa olsun baxın:

  double jointdigits = semilastdigit + lastdigit; // 1.0 + 0.2 = 1.2 

Riyaziyyata girmədən, ədəd ədədlərini təcrid edirik. Gördüyünüz kimi, biz yalnız 0-9-a baxdığımız üçün, 10-a birdən birinə bölmək, onu saxladığınız bir qutu yaratmaq kimidir (ilk sinif müəlliniz nə bir vahid və yüzün olduğunu sizə izah etdiyini xatırlayır). Beləliklə:

  int finalnumber = (int) (jointdigits*10); // Be sure to use parentheses "()" 

Və oraya gedin. Aşağıdakı məhdudiyyətlər nəzərə alınmaqla, iki nömrədən ibarət tam ədəd bir ədəd simli (bu halda iki ədəd) çevrilmişdir:

  • Təkrarlanan dövrlər yoxdur
  • ParseInt kimi sehrli ifadələr yoxdur
42
21 марта '14 в 2:51 2014-03-21 02:51 cavab 21 Mart '14 'də verildi . 2:51 2014-03-21 02:51

Alternativ bir həll Apache Commons ' NumberUtils istifadə etməkdir:

 int num = NumberUtils.toInt("1234"); 

Apache proqramı yaxşıdır, çünki simli yararsız sayısal format olduqda, o zaman 0 dəyəri həmişə qaytarılır. Buna görə tutmaq cəhd blokunu saxlayırsınız.

Apache NumberUtils API versiyası 3.4

40
27 авг. Cavab Ryboflavin 27 avqustda verilir . 2015-08-27 15:07 '15 'də 15:07' də 2015-08-27 15:07

Integer.decode

Ayrıca, public static Integer decode(String nm) throws NumberFormatException istifadə edə bilərsiniz public static Integer decode(String nm) throws NumberFormatException .

Baza 8 və 16 da işləyir:

 // base 10 Integer.parseInt("12"); // 12 - int Integer.valueOf("12"); // 12 - Integer Integer.decode("12"); // 12 - Integer // base 8 // 10 (0,1,...,7,10,11,12) Integer.parseInt("12", 8); // 10 - int Integer.valueOf("12", 8); // 10 - Integer Integer.decode("012"); // 10 - Integer // base 16 // 18 (0,1,...,F,10,11,12) Integer.parseInt("12",16); // 18 - int Integer.valueOf("12",16); // 18 - Integer Integer.decode("#12"); // 18 - Integer Integer.decode("0x12"); // 18 - Integer Integer.decode("0X12"); // 18 - Integer // base 2 Integer.parseInt("11",2); // 3 - int Integer.valueOf("11",2); // 3 - Integer 

Bir Integer yerinə bir int almaq istəyirsinizsə, istifadə edə bilərsiniz:

  • Paketin açılması:

     int val = Integer.decode("12"); 
  • intValue() :

     Integer.decode("12").intValue(); 
32
07 марта '16 в 3:42 2016-03-07 03:42 Cavab verilir ROMANIA_engineer Mart 07 '16 da 3:42 2016-03-07 03:42

Belirli bir simli bir tamsayı dəyərini ehtiva etməyən ən kiçik bir şans olduğunda, bu xüsusi işi həll etmək lazımdır. Təəssüf ki, standart Java üsulları Integer::parseIntInteger::valueOf bu xüsusi işi siqnal etmək üçün Integer::valueOf atır. Beləliklə, adətən, pis kodlaşdırma tərzi hesab olunur ki, axını nəzarət etmək üçün istisnalar istifadə etməlisiniz.

Mənim fikrimcə, bu xüsusi iş bir Optional<Integer> qayıdır. Java belə bir üsul təklif etmədiyindən, aşağıdakı qabığı istifadə edirəm:

 private Optional<Integer> tryParseInteger(String string) { try { return Optional.of(Integer.valueOf(string)); } catch (NumberFormatException e) { return Optional.empty(); } } 

İstifadə edin:

 // prints 1234 System.out.println(tryParseInteger("1234").orElse(-1)); // prints -1 System.out.println(tryParseInteger("foobar").orElse(-1)); 

Hələ içəridə olan axını nəzarət etmək üçün istisnalar istifadə edirsə də, istifadə kodu çox təmiz olur.

25
04 апр. Stefan Dollase tərəfindən verilmiş cavab 04 Apr 2016-04-04 06:13 '16 'da 6:13 2016-04-04 06:13' də

Diziyi bir int üçün çevirmək bir ədədi çevirməkdən daha çətindir. Aşağıdakı məsələləri düşünə bilərsiniz:

  • Simli yalnız 0-9 nömrələri var?
  • Satırdan əvvəl və ya sonra - / + nə olur? Bu mümkündür (hesab nömrələrinə istinad)?
  • MAX _- / MIN_INFINITY- ə nə baş verir ? 99999999999999999999 satırında nə olur? Maşın bu dizəni int kimi idarə edə bilərmi?
23
20 окт. Dennis Ahaus tərəfindən verilmiş cavab 20 oktyabr 2013-10-20 16:18 '13 'da 16:18' da 2013-10-20 16:18

Integer shell sinifinin parseInt(String str) metodundan String dəyərini bir tamsayı dəyərinə çevirmək üçün istifadə edə bilərik.

Məsələn:

 String strValue = "12345"; Integer intValue = Integer.parseInt(strVal); 

Integer sinfi de valueOf(String str) metodu ilə təmin edir:

 String strValue = "12345"; Integer intValue = Integer.valueOf(strValue); 

toInt(String strValue) etmək üçün toInt(String strValue) sinfi də istifadə edə bilərsiniz:

 String strValue = "12345"; Integer intValue = NumberUtils.toInt(strValue); 
22
20 окт. Giridhar Kumar tərəfindən 20 oktyabrda cavab verildi . 2015-10-20 12:51 '15 at 12:51 2015-10-20 12:51

Bunun üçün üsullar:

  1. Integer.parseInt(s) 2. Integer.parseInt(s, radix) 3. Integer.parseInt(s, beginIndex, endIndex, radix) 4. Integer.parseUnsignedInt(s) 5. Integer.parseUnsignedInt(s, radix) 6. Integer.parseUnsignedInt(s, beginIndex, endIndex, radix) 7. Integer.valueOf(s) 8. Integer.valueOf(s, radix) 9. Integer.decode(s) 10. NumberUtils.toInt(s) 11. NumberUtils.toInt(s, defaultValue) 

Integer.valueOf bir Integer obyektini qaytarır, bütün digər üsullar bir int ibtidai istifadə edir.

Commons-> dən son 2 metod və buraya konvertasiya haqqında böyük bir məqalə.

21
03 окт. Cavab Dmytro Shvechikov tərəfindən Oct 03 2017-10-03 22:16 '17 saat 10:16 'da 2017-10-03 22:16

Integer.parseInt(yourString) istifadə edin

Aşağıdakı şeyləri yadda saxla:

Integer.parseInt("1"); // Tamam

Integer.parseInt("-1"); // Tamam

Integer.parseInt("+1"); // Tamam

Integer.parseInt(" 1"); // İstisna (boş yer)

Integer.parseInt("2147483648"); // İstisna (tamsayı maksimum 2 147 483 647 ilə məhduddur)

Integer.parseInt("1.1"); // İstisna ( və ya hər şeyə icazə verilmir)

Integer.parseInt(""); // istisna (0 və ya bir şey deyil)

Yalnız bir növü istisna var: NumberFormatException

19
06 окт. Cavab Lukas Bauer Oct 06 2017-10-06 22:00 '17 saat 22.00 'də 2017-10-06 22:00

Mənim bir həll var, amma nə qədər təsirli olduğunu bilmirəm. Amma yaxşı işləyir və mən onu yaxşılaşdıra bilərəm. Digər tərəfdən, JUnit ilə düzgün bir addım atan bir neçə test etdi. Funksiyanı və testləri əlavə etdik:

 static public Integer str2Int(String str) { Integer result = null; if (null == str || 0 == str.length()) { return null; } try { result = Integer.parseInt(str); } catch (NumberFormatException e) { String negativeMode = ""; if(str.indexOf('-') != -1) negativeMode = "-"; str = str.replaceAll("-", "" ); if (str.indexOf('.') != -1) { str = str.substring(0, str.indexOf('.')); if (str.length() == 0) { return (Integer)0; } } String strNum = str.replaceAll("[^\\d]", "" ); if (0 == strNum.length()) { return null; } result = Integer.parseInt(negativeMode + strNum); } return result; } 

JUnit ilə test:

 @Test public void testStr2Int() { assertEquals("is numeric", (Integer)(-5), Helper.str2Int("-5")); assertEquals("is numeric", (Integer)50, Helper.str2Int("50.00")); assertEquals("is numeric", (Integer)20, Helper.str2Int("$ 20.90")); assertEquals("is numeric", (Integer)5, Helper.str2Int(" 5.321")); assertEquals("is numeric", (Integer)1000, Helper.str2Int("1,000.50")); assertEquals("is numeric", (Integer)0, Helper.str2Int("0.50")); assertEquals("is numeric", (Integer)0, Helper.str2Int(".50")); assertEquals("is numeric", (Integer)0, Helper.str2Int("-.10")); assertEquals("is numeric", (Integer)Integer.MAX_VALUE, Helper.str2Int(""+Integer.MAX_VALUE)); assertEquals("is numeric", (Integer)Integer.MIN_VALUE, Helper.str2Int(""+Integer.MIN_VALUE)); assertEquals("Not is numeric", null, Helper.str2Int("czv.,xcvsa"));  for(Integer num = 0; num < 1000; num++) { for(int spaces = 1; spaces < 6; spaces++) { String numStr = String.format("%0"+spaces+"d", num); Integer numNeg = num * -1; assertEquals(numStr + ": is numeric", num, Helper.str2Int(numStr)); assertEquals(numNeg + ": is numeric", numNeg, Helper.str2Int("- " + numStr)); } } } 
19
23 мая '14 в 18:38 2014-05-23 18:38 cavab 23 may 2014- cü il saat 18 : 38-fitorec tərəfindən verilir

Yalnız əyləncə üçün: Integer çevirmək üçün Java 8 Optional istifadə edə bilərsiniz:

 String str = "123"; Integer value = Optional.of(str).map(Integer::valueOf).get(); // Will return the integer value of the specified string, or it // will throw an NPE when str is null. value = Optional.ofNullable(str).map(Integer::valueOf).orElse(-1); // Will do the same as the code above, except it will return -1 // when srt is null, instead of throwing an NPE. 

Burada Integer.valueOfOptinal birləşdiririk. Bunun faydalı olduğu vəziyyətlər ola bilər - məsələn, null yoxlamalardan çəkinmək istəyirsinizsə. Pre Java 8 kodu belə görünür:

 Integer value = (str == null) ? -1 : Integer.parseInt(str); 
17
09 нояб. Cavab Anton Balaniuc tərəfindən 09 noyabr. 2016-11-09 14:34 '16 saat 02:34 'da 2016-11-09 14:34

Guava tryParse (String) var , hansı ki simli ayrıştırılamazsa null qaytarır, məsələn:

 Integer fooInt = Ints.tryParse(fooString); if (fooInt != null) { ... } 
16
06 авг. Cavab verilir Vitalii Fedorenko 06 aug. 2016-08-06 20:56 '16 saat 20:56 2016-08-06 20:56

Ayrıca qeyri-sayısal olmayan bütün simvolları silməklə və sonra int:

 string mystr = mystr.replaceAll( "[^\\d]", "" ); int number= Integer.parseInt(mystr); 

Bununla yanaşı, yalnız qeyri-mənfi ədədlər üçün işləyir.

14
20 окт. Thijser tərəfindən verilmiş cavab 20 oktyabr 2013-10-20 16:11 '13 at 16:11 2013-10-20 16:11

Bu yuxarıdakı cavablara əlavə olaraq bir neçə xüsusiyyət əlavə etmək istərdim:

  public static int parseIntOrDefault(String value, int defaultValue) { int result = defaultValue; try { result = Integer.parseInt(value); } catch (Exception e) { } return result; } public static int parseIntOrDefault(String value, int beginIndex, int defaultValue) { int result = defaultValue; try { String stringValue = value.substring(beginIndex); result = Integer.parseInt(stringValue); } catch (Exception e) { } return result; } public static int parseIntOrDefault(String value, int beginIndex, int endIndex, int defaultValue) { int result = defaultValue; try { String stringValue = value.substring(beginIndex, endIndex); result = Integer.parseInt(stringValue); } catch (Exception e) { } return result; } 

Və onları çalıştırdığınız zaman bunlar:

  public static void main(String[] args) { System.out.println(parseIntOrDefault("123", 0)); // 123 System.out.println(parseIntOrDefault("aaa", 0)); // 0 System.out.println(parseIntOrDefault("aaa456", 3, 0)); // 456 System.out.println(parseIntOrDefault("aaa789bbb", 3, 6, 0)); // 789 } 
12
01 авг. cavab nxhoaf 01 aug verilir . 2016-08-01 17:44 '16 'da 17:44' də 2016-08-01 17:44 'də

new Scanner("1244").nextInt() istifadə edə bilərsiniz new Scanner("1244").nextInt() . Və ya bir int var, xahiş edirik: new Scanner("1244").hasNextInt()

9
28 февр. Cavab Christian Ullenboom tərəfindən 28 Fevralda verildi . 2017-02-28 23:36 '17 də saat 11:36 'də 2017-02-28 23:36

Proqramın müsabiqələrində, nömrənin həmişə tam bir tamsayı olacağına əmin olduğunuzda, ayrıştırma üçün öz üsulunuzu yaza bilərsiniz. Bu, çek ilə əlaqəli bütün kodları atlayacaqdır (ehtiyacınız olmadığı üçün) və bir az daha məhsuldar olacaq.

  • Həqiqi bir təbii nömrə üçün:

     private static int parseInt(String str) { int i, n = 0; for (i = 0; i < str.length(); i++) { n *= 10; n += str.charAt(i) - 48; } return n; } 
  • Müsbət və mənfi tam ədədlər üçün:

     private static int parseInt(String str) { int i=0, n=0, sign=1; if(str.charAt(0) == '-') { i=1; sign=-1; } for(; i<str.length(); i++) { n*=10; n+=str.charAt(i)-48; } return sign*n; } 

  • Bu ədədlərdən əvvəl və ya sonra bir boşluq gözləyin, daha sonra emaldan əvvəl, str = str.trim() əmin olun.

9
24 апр. Raman Sahası tərəfindən verilmiş cavab 24 aprel 2017-04-24 08:36 '17 də 8:36 'də 2017-04-24 08:36' də

Qeyd edildiyi kimi, Apache Commons NumberUtils bunu edə bilər. Sətirin int birinə inteqrasiya edə bilmədiyi 0 dönüş nədir.

Öz default dəyərinizi də təyin edə bilərsiniz.

 NumberUtils.toInt(String str, int defaultValue) 

Məsələn:

 NumberUtils.toInt("3244", 1) = 3244 NumberUtils.toInt("", 1) = 1 NumberUtils.toInt(null, 5) = 5 NumberUtils.toInt("Hi", 6) = 6 NumberUtils.toInt(" 32 ", 1) = 1 //space in numbers are not allowed NumberUtils.toInt(StringUtils.trimToEmpty( " 32 ",1)) = 32; 
9
26 июля '16 в 8:26 2016-07-26 08:26 Cavab Alireza Fattahi tərəfindən 26 iyul '16' da 8:26 2016-07-26 08:26 'də verilir

Bu kodu bəzi ehtiyatlarla da istifadə edə bilərsiniz.

  • Seçim sayı 1: İstisnəni açıq şəkildə idarə et, məsələn, mesaj mesajını göstərin və cari iş axınının icrasını dayandırın. Məsələn:

     try { String stringValue = "1234"; // From String to Integer int integerValue = Integer.valueOf(stringValue); // Or int integerValue = Integer.ParseInt(stringValue); // Now from integer to back into string stringValue = String.valueOf(integerValue); } catch (NumberFormatException ex) { //JOptionPane.showMessageDialog(frame, "Invalid input string!"); System.out.println("Invalid input string!"); return; } 
  • Variant # 2: İcra mövzu istisna halında davam edə bilərsə təsir dəyişənini sıfırlayın. Məsələn, tutmaq blokunda bəzi dəyişikliklər

     catch (NumberFormatException ex) { integerValue = 0; } 

Müqayisə üçün hər hansı bir sətir sabit istifadə və ya hər hansı bir hesablama hər zaman yaxşı bir fikirdir, çünki sabit bir null dəyəri heç vaxt qaytarır.

9
31 дек. cavab manikant gautam tərəfindən verilir 31 dec. 2015-12-31 08:28 '16 'da saat 08:28' da

Yalnız aşağıdakıları cəhd edə bilərsiniz:

  • Integer.parseInt(your_string); istifadə edin Integer.parseInt(your_string); bir String int üçün çevirmək
  • Double.parseDouble(your_string); istifadə edin Double.parseDouble(your_string); String double çevirmək

bir nümunə

 String str = "8955"; int q = Integer.parseInt(str); System.out.println("Output>>> " + q); // Output: 8955 

 String str = "89.55"; double q = Double.parseDouble(str); System.out.println("Output>>> " + q); // Output: 89.55 
7
14 сент. Cavab Vishal Yadav 14 sep tərəfindən verilir . 2017-09-14 22:45 '17 saat 22:45 'də 2017-09-14 22:45

Normal bir simli üçün istifadə edə bilərsiniz:

 int number = Integer.parseInt("1234"); 

String qurucu və String tamponu üçün istifadə edə bilərsiniz:

 Integer.parseInt(myBuilderOrBuffer.toString()); 
7
18 авг. cavab Aditya 18 aug verilir . 2016-08-18 10:07 '16 'da 10:07' də 2016-08-18 10:07 'də
 int foo=Integer.parseInt("1234"); 

Sətirdə qeyri-sayısal məlumat olmadığından əmin olun.

7
20 апр. İKing tərəfindən 20 apreldə cavab verildi 2016-04-20 12:54 '16 at 12:54 2016-04-20 12:54

Heç kimə parametr kimi bir String tutan Tamsayı konstruktorundan heç biri təəccüblənməmişəm.
Beləliklə, burada:

 String myString = "1234"; int i1 = new Integer(myString); 

Java 8 - Integer (String) .

Əlbəttə, konstruktor tipi Integer qaytarır və qutusuzluq əməliyyatı int dəyərinə çevrilir.


Qeyd etmək vacibdir
Bu konstruktor parseInt metodunu çağırır.

 public Integer(String var1) throws NumberFormatException { this.value = parseInt(var1, 10); } 
6
23 апр. cavab djm.im tərəfindən verilir 23 Apr 2018-04-23 23:49 '18 at 11:49 PM 2018-04-23 23:49

Bura getdik

 String str="1234"; int number = Integer.parseInt(str); print number;//1234 
6
20 нояб. Cavab 20 noyabr Şivanandam Sirmarigari tərəfindən verilir 2016-11-20 07:24 '16 saat 07:24 'də 2016-11-20 07:24

Metodlardan biri: parseInt (String) ibtidai int qaytarır

 String number = "10"; int result = Integer.parseInt(number); System.out.println(result); 

İkinci üsul: valueOf (String) yeni bir Integer () obyektini qaytarır.

 String number = "10"; Integer result = Integer.valueOf(number); System.out.println(result); 
5
12 авг. Pankaj Mandale tərəfindən verilmiş cavab 12 Avqust. 2017-08-12 17:25 '17 saat 17:25 'da 2017-08-12 17:25

Integer.parseInt () funksiyasından istifadə edin və nümunə olmayan bir xarakterin girildiyi hallarda, hər hansı bir səhvləri həll etmək üçün try...catch , məsələn,

 private void ConvertToInt(){ String string = txtString.getText(); try{ int integerValue=Integer.parseInt(string); System.out.println(integerValue); } catch(Exception e){ JOptionPane.showMessageDialog( "Error converting string to integer\n" + e.toString, "Error", JOptionPane.ERROR_MESSAGE); } } 
5
11 нояб. Cavab 11 noyabr tarixində David tərəfindən verilir. 2017-11-11 04:58 '17 də 4:58 2017-11-11 04:58

Kitabxana istifadə etmədən bütün müsbət, mənfi şərtlərlə tam bir proqramdır.

 import java.util.Scanner; public class StringToInt { public static void main(String args[]) { String inputString; Scanner s = new Scanner(System.in); inputString = s.nextLine(); if (!inputString.matches("([+-]?([0-9]*[.])?[0-9]+)")) { System.out.println("Not a Number"); } else { Double result2 = getNumber(inputString); System.out.println("result = " + result2); } } public static Double getNumber(String number) { Double result = 0.0; Double beforeDecimal = 0.0; Double afterDecimal = 0.0; Double afterDecimalCount = 0.0; int signBit = 1; boolean flag = false; int count = number.length(); if (number.charAt(0) == '-') { signBit = -1; flag = true; } else if (number.charAt(0) == '+') { flag = true; } for (int i = 0; i < count; i++) { if (flag  i == 0) { continue; } if (afterDecimalCount == 0.0) { if (number.charAt(i) - '.' == 0) { afterDecimalCount++; } else { beforeDecimal = beforeDecimal * 10 + (number.charAt(i) - '0'); } } else { afterDecimal = afterDecimal * 10 + number.charAt(i) - ('0'); afterDecimalCount = afterDecimalCount * 10; } } if (afterDecimalCount != 0.0) { afterDecimal = afterDecimal / afterDecimalCount; result = beforeDecimal + afterDecimal; } else { result = beforeDecimal; } return result * signBit; } } 
4
01 сент. Cavab Anup Gupta tərəfindən verilir 01 Sep. 2017-09-01 09:53 '17 saat 09:53 ' də 2017-09-01 09:53

Yeri gəlmişkən, simli sıfır olarsa, zəng edin:

 int i = Integer.parseInt(null); 

bir NullPointerException deyil NumberFormatException salır.

3
21 июня '18 в 0:26 2018-06-21 00:26 Cavab Pavel Molchanov tərəfindən 21 iyun 21:26 ' də 0:26 2018-06-21 00:26' də verilir
  • 1
  • 2

tags ilə bağlı digər suallar və ya sual verin