2010-03-28 14 views
6

में परिवर्तित कर सकते हैं, हम चरित्र को ASCII मान के बराबर एक पूर्णांक में परिवर्तित कर सकते हैं, लेकिन क्या हम विपरीत चीज कर सकते हैं यानी दिए गए ASCII मान को इसके वर्ण के बराबर परिवर्तित कर सकते हैं?क्या हम पूर्णांक को चरित्र

public String alphabets(int[] num) 
{ 
char[] s = new char[num.length]; 
String str = new String(); 
for(int i=0; i< num.length; i++) 
{ 
    s[i] = 'A' + (char)(num[i]- 1); 
    str += Character.toString(s[i]); 
} 
return str;   
} 

संभव सटीक त्रुटि के खो से पता चलता ...

+2

यह कहता है कि सटीक त्रुटि का नुकसान क्योंकि एक int किसी चरित्र की तुलना में बड़ी संख्या में हो सकता है। तो आप किसी भी चरित्र को एक int में डाल सकते हैं, लेकिन चींटियों की ऊपरी रेंज एक चरित्र को डालने के लिए बहुत बड़ी है। – Joel

उत्तर

8

परिवर्तित करने के लिए करने के लिए/से:

int i = 65; 
char c = (char)i; 

char c = 'A'; 
int i = (int)c; 
+3

nopes, यह सटीक – higherDefender

+7

@ डीजे के संभावित नुकसान का कहना है, सटीकता का संभावित नुकसान वर्णों की ASCII सीमा पर लागू नहीं होता है। – Yishai

1

char काम करने के लिए कास्टिंग नहीं है?

+0

nopes यह कहता है कि परिशुद्धता – higherDefender

+0

वास्तव में संभव नुकसान? जब मैं जावा/जावैक 1.6 के साथ कोशिश करता हूं तो काम करता है। –

0

ऐसे कई तरीके हैं। कैरेक्टर रैपर क्लास को देखें। Character.digit() चाल चल सकता है। दरअसल यह चाल है !!

Integer.valueOf('a') 
+3

डीजे एक चरित्र के लिए एक पूर्णांक के लिए पूछ रहा है, न कि दूसरी तरफ। – Ricket

3

Character.toChars:

public static char[] toChars(int codePoint) 

अपने UTF-16 के एक चार सरणी में संग्रहीत प्रतिनिधित्व करने के लिए निर्दिष्ट चरित्र (यूनिकोड कोड बिंदु) में बदलता है।

5

आप वास्तव में यहाँ तक कि एक डाली की जरूरत नहीं है:

char c = 126; 

और यह वास्तव में के रूप में अच्छी यूनिकोड वर्ण के लिए काम करने के लिए प्रकट होता है। उदाहरण के लिए प्रयास करें:

System.out.println((int) 'โ'); // outputs 3650, a thai symbol 
char p = 3650; 
System.out.println(p); // outputs the above symbol 
6

त्रुटि से आप शुरू में लगता होगा और अधिक जटिल है, क्योंकि यह वास्तव में '+' ऑपरेटर है कि "सटीक त्रुटि की संभावित हानि" कारण बनता है।

s[i] = (char)('A' + (num[i]- 1));


स्पष्टीकरण
Java Language Specification में §5.6.2 Binary Numeric Promotion की पहली बुलेट सूची में यह कहा गया है कि:

जब एक ऑपरेटर लागू होता है अगर डाली ले जाया जाता है त्रुटि हल किया जा सकता ऑपरेटरों की एक जोड़ी के लिए बाइनरी न्यूमेरिक पदोन्नति [...] निम्नलिखित नियम लागू होते हैं, क्रमशः ऑपरेंड को कन्वर्ट करने के लिए चौड़े रूपांतरण (§5.1.2) का उपयोग करते हुए:

  • यदि कोई भी ऑपरेंड संदर्भ प्रकार का है, तो अनबॉक्सिंग रूपांतरण (§5.1.8) किया जाता है। फिर:
  • यदि या तो ऑपरेंड डबल प्रकार का है, तो दूसरा डबल में परिवर्तित हो जाता है।
  • अन्यथा, यदि ऑपरेंड फ्लोट प्रकार का है, तो दूसरा फ्लोट में परिवर्तित हो जाता है।
  • अन्यथा, यदि ऑपरेंड लंबे समय तक है, तो दूसरा लंबा रूपांतरित हो जाता है।
  • अन्यथा, दोनों ऑपरेटरों को टाइप int में परिवर्तित कर दिया जाता है।

अगले बुलेट सूची में यह कहा गया है कि:

बाइनरी संख्यात्मक पदोन्नति कुछ ऑपरेटरों के ऑपरेंड पर किया जाता है:

  • गुणक ऑपरेटरों *,/और% (§15.17) सांख्यिक प्रकार के लिए
  • जोड़ और घटाव के ऑपरेटरों + और - (§15.18.2)
  • संख्यात्मक तुलना ऑपरेटर, और> = (§15.20.1)
  • संख्यात्मक समानता ऑपरेटरों == और! = (§15.21.1)
  • पूर्णांक बिटवाई ऑपरेटरों और, ^, और | (§15.22.1)
  • कुछ मामलों में, सशर्त ऑपरेटर? :
    s[i] = (int)'A' + (int)((char)(num[i] - (int)1));
    इसलिए त्रुटि: (§15.25)

आपके मामले में, कि करने के लिए अनुवाद।

संबंधित मुद्दे