java हरण वर्णों को जावा में पूर्णांक में कनवर्ट करना




पूर्णांक संख्या मराठी (5)

जैसा कि दस्तावेज़ स्पष्ट रूप से बताता है, Character.getNumericValue() वर्ण के मान को एक अंक के रूप में देता है।
यदि चरित्र एक अंक नहीं है तो यह -1 लौटाता है।

यदि आप बॉक्स किए गए Character ऑब्जेक्ट का न्यूमेरिक यूनिकोड कोड पॉइंट प्राप्त करना चाहते हैं, तो आपको इसे पहले अनबॉक्स करना होगा:

int value = (int)c.charValue();

क्या कोई मुझे बता सकता है कि यहां क्या हो रहा है:

char c = '+';
int i = (int)c;
System.out.println("i: " + i + " ch: " + Character.getNumericValue(c));

यह प्रिंट i: 43 ch:-1 । क्या इसका मतलब है कि मुझे char को int बदलने के लिए आदिम रूपांतरणों पर भरोसा करना है? तो मैं एक Character को Integer कैसे परिवर्तित कर सकता हूं?

संपादित करें: हां मुझे पता है Character.getNumericValue रिटर्न -1 यदि यह संख्यात्मक मान नहीं है और यह मुझे समझ में आता है। सवाल यह है कि क्यों प्राचीन रूपांतरण करना 43 लौटाता है?

एडिट 2: 43 + लिए एएससीआईआई है, लेकिन मैं उम्मीद करता हूं कि कलाकार सफल होने की तरह सफल न हो। getNumericValue सफल नहीं हुआ। अन्यथा इसका मतलब है कि एक ही ऑपरेशन करने के लिए दो अर्थपूर्ण समकक्ष तरीके हैं लेकिन विभिन्न परिणामों के साथ?


Character.getNumericValue(c)

java.lang.Character.getNumericValue(char ch) int मान देता है जो निर्दिष्ट यूनिकोड वर्ण दर्शाता है। उदाहरण के लिए, चरित्र '\u216C' (रोमन अंक पचास) 50 के मान के साथ एक int वापस कर देगा।

अक्षरों को उनके अपरकेस ('\u0041' through '\u005A') , लोअरकेस ('\u0061' through '\u007A') , और पूर्ण चौड़ाई संस्करण ('\uFF21' through '\uFF3A' and '\uFF41' through '\uFF5A') माध्यम से) 10 से 35 तक संख्यात्मक मान होते हैं। यह यूनिकोड विनिर्देश से स्वतंत्र है, जो इन चार मानों के लिए संख्यात्मक मान निर्दिष्ट नहीं करता है।

यह विधि चरित्र के संख्यात्मक मान को एक गैर-ऋणात्मक int मान के रूप में लौटाती है;

-2 यदि चरित्र का एक संख्यात्मक मान है जो एक गैर-पूर्णांक पूर्णांक नहीं है;

-1 अगर चरित्र का कोई संख्यात्मक मूल्य नहीं है।

और here लिंक है।


Character#getNumericValue लिए जावाडोक से Character#getNumericValue :

यदि चरित्र के पास संख्यात्मक मान नहीं है, तो -1 वापस आ गया है। यदि चरित्र में एक संख्यात्मक मान है जिसे गैर-अभिन्न पूर्णांक (उदाहरण के लिए, एक आंशिक मान) के रूप में प्रदर्शित नहीं किया जा सकता है, तो -2 वापस कर दिया जाता है।

चरित्र + संख्यात्मक मान नहीं है, इसलिए आपको -1 मिल रहा है।

अद्यतन करें:

कारण है कि आदिम रूपांतरण आपको 43 दे रहा है कि चरित्र '+' को पूर्णांक 43 के रूप में एन्कोड किया गया है।


43 "+" प्रतीक के लिए dec ascii संख्या है। यह बताता है कि आपको 43 वापस क्यों मिलता है। http://en.wikipedia.org/wiki/ASCII


public class IntergerParser {

public static void main(String[] args){
String number = "+123123";
System.out.println(parseInt(number));
}

private static int parseInt(String number){
    char[] numChar = number.toCharArray();
    int intValue = 0;
    int decimal = 1;
    for(int index = numChar.length ; index > 0 ; index --){
        if(index == 1 ){
            if(numChar[index - 1] == '-'){
                return intValue * -1;
            } else if(numChar[index - 1] == '+'){
                return intValue;
            }
        }
        intValue = intValue + (((int)numChar[index-1] - 48) * (decimal));
        System.out.println((int)numChar[index-1] - 48+ " " + (decimal));
        decimal = decimal * 10;
    }
    return intValue;
}




primitive