2010-04-21 21 views

उत्तर

16

क्या char[] में यूनिकोड वर्ण संख्या के अंक को बनाते हैं? उस मामले में बस char[] से एक स्ट्रिंग बनाने और उपयोग Integer.parseInt:

char[] digits = { '1', '2', '3' }; 
int number = Integer.parseInt(new String(digits)); 
1

अधिक प्रदर्शन के साथ एक और तरीका है:

char[] digits = { '1', '2', '3' }; 

int result = 0; 
for (int i = 0; i < chars.length; i++) { 
    int digit = ((int)chars[i] & 0xF); 
    for (int j = 0; j < chars.length-1-i; j++) { 
     digit *= 10; 
    } 
    result += digit; 
} 
+1

आप बस अपने भीतर के पाश 'परिणाम * से बदल सकते हैं कोशिश कर सकते हैं = 10; '। –

+0

क्या आपका मतलब है 'अंक * = 10;' से 'परिणाम * = 10; '? –

+1

नहीं, आप * पूरे * आंतरिक पाश ('के लिए (int j = ...') से छुटकारा पा सकते हैं और सभी तीन पंक्तियों को केवल 'परिणाम * = 10;' के साथ प्रतिस्थापित कर सकते हैं। –

10

इससे भी अधिक प्रदर्शन और क्लीनर कोड (और एक नया आवंटित करने के लिए कोई जरूरत नहीं स्ट्रिंग ऑब्जेक्ट):

int charArrayToInt(char []data,int start,int end) throws NumberFormatException 
{ 
    int result = 0; 
    for (int i = start; i < end; i++) 
    { 
     int digit = (int)data[i] - (int)'0'; 
     if ((digit < 0) || (digit > 9)) throw new NumberFormatException(); 
     result *= 10; 
     result += digit; 
    } 
    return result; 
} 
6
char[] digits = { '0', '1', '2' }; 
int number = Integer.parseInt(String.valueOf(digits)); 

यह भी काम करता है।

0

आप इस तरह उपयोग कर सकते हैं के लिए एक के बाद एक मिल int करने के लिए

char[] chars = { '0', '1', '2' }; 
int y=0; 
for (int i = 0; i < chars.length; i++) { 
    y = Integer.parseInt(String.valueOf(chars[i])); 
    System.out.println(y); 
} 
0

ठीक है, तुम भी इस

char c[] = {'1','2','3'}; 
    int total=0,x=0,m=1; 
    for(int i=c.length-1;i>=0;i--) 
    { 
     x = c[i] - '0'; 
     x = x*m; 
     m *= 10; 
     total += x; 
    } 
    System.out.println("Integer is " + total); 
संबंधित मुद्दे