2013-04-15 7 views
5

मैं एक सर को एक सरणी (द्वितीय और तीसरा) स्लॉट से int मान में परिवर्तित करने की कोशिश कर रहा हूं जो कि उदाहरण के अनुरूप है। ए = 1, बी = 2, आदि ए-जेड के लिए।चार ए-जेड को संबंधित int में कनवर्ट करें।

मुझे लगता है कि लंबा रास्ता होगा यदि (x.charAt (i) == 'a') {int z = 1; } पूरे ए - जेड के लिए जो मुझे लगता है कि यह एक बहुत ही व्यावहारिक विधि है। क्या कोई ऐसी विधि है जो एक छोटी सी कोड के साथ एक ही चीज़ कर सकती है?

public static void computeCheckDigit(String x){ 
char [] arr = new char[x.length()]; 

for(int i=0; i<x.length();i++){ 
    arr[i] = x.charAt(i); 
} 


} 
+1

हैं 'ए' == 1', '' '' बराबर क्या है? –

+1

यदि आप ASCII वर्णों के साथ काम कर रहे हैं, तो आप '(int) Character.toUpperCase ('A') - 64' जो = = 1' (या' (int) वर्ण .toUpperCase (x.charAt (i)) - 64') – MadProgrammer

+0

स्ट्रिंग चार और int के मिश्रण की तरह कुछ होगी। मुझे केवल 2 और तीसरे अक्षर को int में परिवर्तित करने की आवश्यकता होगी क्योंकि इसके बाद गणना की आवश्यकता होगी। बाद में अनदेखा में जोड़ देंगे। – LRZJohn

उत्तर

4

इस प्रयास करें:

arr[i] = Character.toLowerCase(x.charAt(i)) - 'a' + 1; 

आप पूर्णांक सरणी के बजाय चार सरणी का उपयोग करना होगा।

public static void main(String[] args) { 
    String x = "AbC"; 
    int[] arr = new int[x.length()]; 

    for (int i = 0; i < x.length(); i++) { 
     arr[i] = Character.toLowerCase(x.charAt(i)) - 'a' + 1; 
    } 
    System.out.println(Arrays.toString(arr)); 

} 

आउटपुट:

[1, 2, 3] 
+1

अंत में, upvote :) –

3

जब से तुम मामले नास्तिक होने लगते हैं, तो आप को अपरकेस में चाहते हैं या पहली स्ट्रिंग लोअरकेस सकता है, लेकिन आप स्थान-अवगत होना चाहते हैं:

// If you don't state a locale, and you are in Turkey, 
// weird things can happen. Turkish has the İ character. 
// Using lower case instead could lead to the ı character instead. 
final String xu = x.toUpperCase(Locale.US); 
for (int i = 0; i < xu.length(); ++i) { 
    arr[i] = xu.charAt(i) - 'A' + 1; 
} 

एक वैकल्पिक पाश का प्रयोग करेंगे:

// Casing not necessary. 
for (int i = 0; i < x.length(); ++i) { 
    // One character 
    String letter = x.substr(i, i+1); 
    // A is 10 in base 11 and higher. Z is 35 in base 36. 
    // Subtract 9 to have A-Z be 1-26. 
    arr[i] = Integer.valueOf(letter, 36) - 9; 
} 
+0

स्थानीय लोकेल – acdcjunior

+0

इंगित करने के लिए +1 यह लागू परावर्तक है। मैंने यह जवाब देने के लिए अपना जवाब संपादित किया कि आपको मेरे दूसरे विकल्प में मामला बदलने की जरूरत नहीं है। –

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