मैं जावा में ए String
को कैसे बदल सकता हूं int
?
मेरे स्ट्रिंग में केवल संख्याएँ हैं, और मैं उस संख्या को वापस करना चाहता हूँ जिसका वह प्रतिनिधित्व करता है।
उदाहरण के लिए, स्ट्रिंग "1234"
को देखते हुए परिणाम संख्या होनी चाहिए 1234
।
मैं जावा में ए String
को कैसे बदल सकता हूं int
?
मेरे स्ट्रिंग में केवल संख्याएँ हैं, और मैं उस संख्या को वापस करना चाहता हूँ जिसका वह प्रतिनिधित्व करता है।
उदाहरण के लिए, स्ट्रिंग "1234"
को देखते हुए परिणाम संख्या होनी चाहिए 1234
।
जवाबों:
String myString = "1234";
int foo = Integer.parseInt(myString);
यदि आप जावा डॉक्यूमेंटेशन को देखते हैं, तो आप "कैच" पर ध्यान देंगे कि यह फ़ंक्शन एक फेंक सकता है NumberFormatException
, जो आपको निश्चित रूप से संभालना होगा:
int foo;
try {
foo = Integer.parseInt(myString);
}
catch (NumberFormatException e)
{
foo = 0;
}
(यह उपचार एक विकृत संख्या को परिभाषित करता है 0
, लेकिन आप चाहें तो कुछ और कर सकते हैं।)
वैकल्पिक रूप से, आप Ints
अमरूद लाइब्रेरी से एक विधि का उपयोग कर सकते हैं , जो जावा 8 के संयोजन में Optional
, एक स्ट्रिंग को एक इंट में बदलने के लिए एक शक्तिशाली और संक्षिप्त तरीके से बनाता है:
import com.google.common.primitives.Ints;
int foo = Optional.ofNullable(myString)
.map(Ints::tryParse)
.orElse(0)
int foo = NumberUtils.toInt(myString, 0);
उदाहरण के लिए, यहाँ दो तरीके हैं:
Integer x = Integer.valueOf(str);
// or
int y = Integer.parseInt(str);
इन विधियों में थोड़ा अंतर है:
valueOf
का नया या कैश्ड उदाहरण देता है java.lang.Integer
parseInt
आदिम लौटाता है int
।सभी मामलों के लिए समान है: Short.valueOf
/ parseShort
, Long.valueOf
/ parseLong
, आदि।
valueOf
विधि सिर्फ हैreturn valueOf(parseInt(string));
valueOf
खुद को पुनरावर्ती कहता है?
valueOf(String)
स्ट्रिंग का उपयोग करके पहले इंट को पार्स करके parseInt(String)
और फिर एक इंटीजर को उस इंटीग्रेशन में लपेटकर लागू किया जाता है valueOf(int)
। यहां कोई पुनरावृत्ति नहीं होती है valueOf(String)
और valueOf(int)
दो पूरी तरह से अलग कार्य हैं, भले ही उनका नाम एक ही हो।
खैर, एक बहुत महत्वपूर्ण बात पर विचार करना है कि पूर्णांक पार्सर NumberFormatException फेंकता के रूप में कहा गया है जावाडोक ।
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.
}
विभाजित अपवादों या गतिशील रूप से किसी चीज़ को पार्स करने से पूर्णांक मान प्राप्त करने का प्रयास करते समय इस अपवाद को संभालना महत्वपूर्ण है।
"([0-9]+)"
से एक या अधिक अंक प्राप्त करने वाले एक या अधिक अंकों के पहले अनुक्रम को "कब्जा" करेंगे। को देखो Matcher
कि पैकेज में वर्ग।
इसे मैन्युअल रूप से करें:
public static int strToInt( String str ){
int i = 0;
int num = 0;
boolean isNeg = false;
//Check for negative sign; if it's 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;
}
Integer.parseInt(s)
? - मैं इस बारे में एक साक्षात्कार प्रश्न होने की बात देख रहा हूं, लेकिन क) इसका मतलब यह नहीं है कि आप इसे इस तरह से करेंगे (जो कि प्रश्नकर्ता ने पूछा है), और ख) वैसे भी इस उत्तर का एक बहुत बुरा उदाहरण है।
Integer.parseInt
क्योंकि यह कोई सत्यापन नहीं करता है।
एक वैकल्पिक समाधान अपाचे कॉमन्स नंबरुलेट्स का उपयोग करना है:
int num = NumberUtils.toInt("1234");
अपाचे की उपयोगिता अच्छी है क्योंकि यदि स्ट्रिंग एक अमान्य संख्या प्रारूप है तो 0 हमेशा लौटाया जाता है। इसलिए आप को पकड़ने की कोशिश ब्लॉक को बचाने।
वर्तमान में मैं कॉलेज के लिए एक असाइनमेंट कर रहा हूं, जहां मैं कुछ अभिव्यक्तियों का उपयोग नहीं कर सकता हूं, जैसे कि ऊपर वाले, और एएससीआईआई टेबल को देखकर, मैं इसे करने में कामयाब रहा। यह कहीं अधिक जटिल कोड है, लेकिन यह दूसरों की मदद कर सकता है जो प्रतिबंधित हैं जैसे मैं था।
पहली चीज इनपुट प्राप्त करना है, इस मामले में, अंकों की एक स्ट्रिंग; मैं इसे कॉल करूंगा String number
, और इस मामले में, मैं 12 नंबर का उपयोग करके इसे उदाहरण के लिए छोड़ दूँगाString number = "12";
एक और सीमा यह थी कि मैं दोहराव वाले चक्रों का उपयोग नहीं कर सकता था, इसलिए, एक for
चक्र (जो एकदम सही होता) का भी उपयोग नहीं किया जा सकता है। यह हमें थोड़ा सीमित करता है, लेकिन फिर, यही लक्ष्य है। चूँकि मुझे केवल दो अंकों की आवश्यकता थी (अंतिम दो अंक लेना), एक सरल charAt
हल:
// 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);
कोड होने के बाद, हमें केवल तालिका को देखना होगा, और आवश्यक समायोजन करना होगा:
double semilastdigit = semilastdigitASCII - 48; //A quick look, and -48 is the key
double lastdigit = lastdigitASCII - 48;
अब, डबल क्यों? खैर, वास्तव में "अजीब" कदम के कारण। वर्तमान में हमारे पास दो युगल हैं, 1 और 2, लेकिन हमें इसे 12 में बदलने की आवश्यकता है, कोई भी गणितीय ऑपरेशन नहीं है जो हम कर सकते हैं।
हम बाद के (अंतिम) को 2/10 = 0.2
इस तरह से 10 से विभाजित कर रहे हैं (इसलिए दोहरा क्यों) इस तरह से हैं:
lastdigit = lastdigit/10;
यह केवल संख्या के साथ खेल रहा है। हम अंतिम अंक को दशमलव में बदल रहे थे। लेकिन अब, देखो क्या होता है:
double jointdigits = semilastdigit + lastdigit; // 1.0 + 0.2 = 1.2
गणित में भी शामिल हुए बिना, हम बस इकाइयों को एक संख्या के अंकों को अलग कर रहे हैं। आप देखते हैं, चूंकि हम केवल 0-9 पर विचार करते हैं, 10 के कई से विभाजित करना एक "बॉक्स" बनाने जैसा है, जहां आप इसे स्टोर करते हैं (जब आपके पहले ग्रेड शिक्षक ने आपको समझाया कि एक इकाई और सौ क्या थे)। इसलिए:
int finalnumber = (int) (jointdigits*10); // Be sure to use parentheses "()"
और वहां तुम जाओ। आपने निम्न सीमाओं पर विचार करते हुए, उन दो अंकों से बने पूर्णांक में, अंकों का एक स्ट्रिंग (इस मामले में, दो अंक) को बदल दिया:
'0'
इसके बजाय केवल चरित्र के लिए उपयोग कर सकते हैं 48
और कभी नहीं करना चाहिए इसके वास्तविक संख्यात्मक मान से परेशान हैं। तीसरा, double
मानों के साथ पूरा चक्कर लगाने का कोई मतलब नहीं है क्योंकि आप दस से विभाजित कर रहे हैं, बस दस के साथ गुणा करने के लिए। परिणाम केवल semilastdigit * 10 + lastdigit
प्राथमिक विद्यालय में सीखा जाता है, जब दशमलव प्रणाली की शुरुआत की गई थी ...
Integer.decode
आप भी इस्तेमाल कर सकते हैं public static Integer decode(String nm) throws NumberFormatException
।
यह बेस 8 और 16 के लिए भी काम करता है:
// 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
यदि आप int
इसके बजाय प्राप्त करना चाहते Integer
हैं तो उपयोग कर सकते हैं:
बॉक्स से निकालना:
int val = Integer.decode("12");
intValue()
:
Integer.decode("12").intValue();
जब भी इस बात की थोड़ी सी भी संभावना है कि दिए गए स्ट्रिंग में एक इंटेगर नहीं है, तो आपको इस विशेष मामले को संभालना होगा। अफसोस की बात है, मानक जावा तरीके Integer::parseInt
और इस विशेष मामले को इंगित करने के लिए Integer::valueOf
एक फेंक देते हैं NumberFormatException
। इस प्रकार, आपको प्रवाह नियंत्रण के अपवादों का उपयोग करना होगा, जिसे आमतौर पर खराब कोडिंग शैली माना जाता है।
मेरी राय में, खाली लौटकर इस विशेष मामले को संभालना चाहिए Optional<Integer>
। चूंकि जावा इस तरह की विधि की पेशकश नहीं करता है, इसलिए मैं निम्नलिखित आवरण का उपयोग करता हूं:
private Optional<Integer> tryParseInteger(String string) {
try {
return Optional.of(Integer.valueOf(string));
} catch (NumberFormatException e) {
return Optional.empty();
}
}
उदाहरण उपयोग:
// prints "12"
System.out.println(tryParseInteger("12").map(i -> i.toString()).orElse("invalid"));
// prints "-1"
System.out.println(tryParseInteger("-1").map(i -> i.toString()).orElse("invalid"));
// prints "invalid"
System.out.println(tryParseInteger("ab").map(i -> i.toString()).orElse("invalid"));
हालांकि यह अभी भी आंतरिक रूप से प्रवाह नियंत्रण के अपवादों का उपयोग कर रहा है, उपयोग कोड बहुत साफ हो जाता है। इसके अलावा, आप स्पष्ट रूप से उस मामले को अलग कर सकते हैं, जहां -1
एक वैध मूल्य के रूप में पार्स किया गया है और उस मामले में जहां अमान्य स्ट्रिंग को पार्स नहीं किया जा सकता है।
एक स्ट्रिंग को एक इंट में बदलना केवल एक संख्या को बदलने से अधिक जटिल है। आप निम्नलिखित मुद्दों के बारे में सोचते हैं:
इसे करने के तरीके:
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 इंटेगर ऑब्जेक्ट, अन्य सभी तरीकों का उत्पादन करता है - आदिम इंट।
कॉमन्स-लैंग 3 से अंतिम 2 विधियां और यहां परिवर्तित करने के बारे में बड़ा लेख ।
स्ट्रिंग मान को पूर्णांक मान में परिवर्तित करने के लिए हम रैपर क्लास की parseInt(String str)
विधि का उपयोग कर सकते हैं Integer
।
उदाहरण के लिए:
String strValue = "12345";
Integer intValue = Integer.parseInt(strVal);
Integer
वर्ग भी प्रदान करता है valueOf(String str)
विधि:
String strValue = "12345";
Integer intValue = Integer.valueOf(strValue);
हम रूपांतरण के लिए NumberUtils उपयोगिता वर्गtoInt(String strValue)
का भी उपयोग कर सकते हैं :
String strValue = "12345";
Integer intValue = NumberUtils.toInt(strValue);
का उपयोग करें Integer.parseInt(yourString)
।
निम्नलिखित बातें याद रखें:
Integer.parseInt("1");
// ठीक
Integer.parseInt("-1");
// ठीक
Integer.parseInt("+1");
// ठीक
Integer.parseInt(" 1");
// अपवाद (रिक्त स्थान)
Integer.parseInt("2147483648");
// अपवाद (पूर्णांक 2,147,483,647 के अधिकतम मूल्य तक सीमित है )
Integer.parseInt("1.1");
// अपवाद ( । या , या जो कुछ भी अनुमति नहीं है)
Integer.parseInt("");
// अपवाद (0 या कुछ नहीं)
केवल एक प्रकार का अपवाद है: NumberFormatException
मेरे पास एक समाधान है, लेकिन मुझे नहीं पता कि यह कितना प्रभावी है। लेकिन यह अच्छी तरह से काम करता है, और मुझे लगता है कि आप इसे सुधार सकते हैं। दूसरी ओर, मैंने जेयूनिट के साथ कुछ परीक्षण किए जो सही तरीके से आगे बढ़ते हैं । मैंने फ़ंक्शन और परीक्षण संलग्न किया:
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 के साथ परीक्षण:
@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"));
/**
* Dynamic test
*/
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));
}
}
}
(int) Double.parseDouble(input.replaceAll("[^0-9\\.\\-]", ""));
Google अमरूद में ट्रीपर्स (स्ट्रिंग) है , जो null
अगर स्ट्रिंग को पार्स नहीं किया जा सकता है, उदाहरण के लिए:
Integer fooInt = Ints.tryParse(fooString);
if (fooInt != null) {
...
}
आप सभी गैर-संख्यात्मक वर्णों को हटाकर और फिर पूर्णांक को पार्स करके शुरू कर सकते हैं:
String mystr = mystr.replaceAll("[^\\d]", "");
int number = Integer.parseInt(mystr);
लेकिन चेतावनी दी जाए कि यह केवल गैर-नकारात्मक संख्याओं के लिए काम करता है।
"4+2"
हूं, तो मुझे 42
बिना किसी संकेत के परिणाम मिलेगा कि मैंने जो करने की कोशिश की थी, वह गुमराह था। उपयोगकर्ता को यह आभास हो जाएगा कि बुनियादी भाव दर्ज करना 4+2
एक वैध इनपुट था, लेकिन आवेदन गलत मूल्य के साथ जारी है। इसके अलावा, प्रकार है String
, नहीं string
...
पिछले उत्तरों के अलावा, मैं कई कार्य जोड़ना चाहूंगा। जब आप उनका उपयोग करते हैं तो ये परिणाम होते हैं:
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
}
कार्यान्वयन:
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;
}
जैसा कि कहा गया है, अपाचे कॉमन्स ' NumberUtils
कर सकते हैं। 0
यदि यह स्ट्रिंग को इंट में परिवर्तित नहीं कर पाता है तो यह वापस आ जाता है।
आप अपने स्वयं के डिफ़ॉल्ट मान को भी परिभाषित कर सकते हैं:
NumberUtils.toInt(String str, int defaultValue)
उदाहरण:
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;
आप इस कोड का उपयोग कुछ सावधानियों के साथ भी कर सकते हैं।
विकल्प # 1: अपवाद को स्पष्ट रूप से संभालें, उदाहरण के लिए, एक संदेश संवाद दिखा रहा है और फिर वर्तमान वर्कफ़्लो के निष्पादन को रोक देता है। उदाहरण के लिए:
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;
}
विकल्प # 2: प्रभावित चर को रीसेट करें यदि अपवाद के मामले में निष्पादन प्रवाह जारी रह सकता है। उदाहरण के लिए, कैच ब्लॉक में कुछ संशोधनों के साथ
catch (NumberFormatException ex) {
integerValue = 0;
}
तुलना या किसी भी प्रकार की कंप्यूटिंग के लिए एक स्ट्रिंग स्थिरांक का उपयोग करना हमेशा एक अच्छा विचार होता है, क्योंकि एक स्थिरांक कभी भी शून्य मान नहीं देता है।
JOptionPane.showMessageDialog()
वेनिला जावा प्रश्न के उत्तर में डालने से कोई मतलब नहीं है।
Integer.valueOf(String);
प्रकार वापस नहीं करता है int
।
आप उपयोग कर सकते हैं new Scanner("1244").nextInt()
। या पूछें कि क्या कोई इंट मौजूद है:new Scanner("1244").hasNextInt()
प्रोग्रामिंग प्रतियोगिताओं में, जहां आपको आश्वासन दिया जाता है कि नंबर हमेशा एक वैध पूर्णांक होगा, फिर आप इनपुट को पार्स करने के लिए अपनी विधि लिख सकते हैं। यह सभी सत्यापन से संबंधित कोड को छोड़ देगा (क्योंकि आपको इसकी कोई आवश्यकता नहीं है) और थोड़ा अधिक कुशल होगा।
मान्य सकारात्मक पूर्णांक के लिए:
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;
}
सकारात्मक और नकारात्मक दोनों पूर्णांकों के लिए:
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;
}
यदि आप इन नंबरों से पहले या बाद में एक व्हाट्सएप की उम्मीद कर रहे हैं, तो str = str.trim()
आगे की प्रक्रिया से पहले एक बार करना सुनिश्चित करें ।
बस आप यह कोशिश कर सकते हैं:
Integer.parseInt(your_string);
एक कन्वर्ट करने के String
लिएint
Double.parseDouble(your_string);
एक कन्वर्ट करने के String
लिएdouble
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
int foo=Integer.parseInt("1234");
सुनिश्चित करें कि स्ट्रिंग में कोई गैर-संख्यात्मक डेटा नहीं है।
मुझे थोड़ी हैरानी है कि किसी ने इंटर्जेन्जर कंस्ट्रक्टर का जिक्र नहीं किया जो स्ट्रिंग को एक पैरामीटर के रूप में लेता है।
तो, यहाँ यह है:
String myString = "1234";
int i1 = new Integer(myString);
बेशक, निर्माता प्रकार लौट आएगा Integer
, और एक अनबॉक्सिंग ऑपरेशन मूल्य को धर्मान्तरित करता है int
।
यह उल्लेख करना महत्वपूर्ण है : यह निर्माता parseInt
विधि को कॉल करता है।
public Integer(String var1) throws NumberFormatException {
this.value = parseInt(var1, 10);
}
Integer.parseInt () का उपयोग करें और इसे try...catch
किसी भी त्रुटि को संभालने के लिए एक ब्लॉक के अंदर रखें , यदि कोई गैर-संख्यात्मक चरित्र दर्ज किया गया हो, उदाहरण के लिए,
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);
}
}
ये रहा
String str="1234";
int number = Integer.parseInt(str);
print number;//1234
इसे सात तरीकों से किया जा सकता है:
import com.google.common.primitives.Ints;
import org.apache.commons.lang.math.NumberUtils;
String number = "999";
1) का उपयोग कर Ints.tryParse
:
int result = Ints.tryParse(number);
2) का उपयोग कर NumberUtils.createInteger
:
Integer result = NumberUtils.createInteger(number);
3) का उपयोग कर NumberUtils.toInt
:
int result = NumberUtils.toInt(number);
4) का उपयोग कर Integer.valueOf
:
Integer result = Integer.valueOf(number);
5) का उपयोग कर Integer.parseInt
:
int result = Integer.parseInt(number);
6) का उपयोग कर Integer.decode
:
int result = Integer.decode(number);
7) का उपयोग कर Integer.parseUnsignedInt
:
int result = Integer.parseUnsignedInt(number);
एक विधि parseInt (स्ट्रिंग) है। यह एक आदिम int लौटाता है:
String number = "10";
int result = Integer.parseInt(number);
System.out.println(result);
दूसरा तरीका valueOf (स्ट्रिंग) है, और यह एक नया पूर्णांक () ऑब्जेक्ट लौटाता है:
String number = "10";
Integer result = Integer.valueOf(number);
System.out.println(result);
आप निम्नलिखित में से किसी का उपयोग कर सकते हैं:
Integer.parseInt(s)
Integer.parseInt(s, radix)
Integer.parseInt(s, beginIndex, endIndex, radix)
Integer.parseUnsignedInt(s)
Integer.parseUnsignedInt(s, radix)
Integer.parseUnsignedInt(s, beginIndex, endIndex, radix)
Integer.valueOf(s)
Integer.valueOf(s, radix)
Integer.decode(s)
NumberUtils.toInt(s)
NumberUtils.toInt(s, defaultValue)
यह एक पुस्तकालय का उपयोग किए बिना सकारात्मक और नकारात्मक सभी स्थितियों के साथ एक पूर्ण कार्यक्रम है
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;
}
}
Integer.parseInt
।