2012-08-15 21 views
6

में आदेशित सूची जैसे आधार 10 संख्या को वर्णमाला में कैसे परिवर्तित करें I HTML में ऑर्डर सूची जैसे वर्णमाला समकक्ष में एक पूर्णांक को परिवर्तित करना चाहते हैं।एचटीएमएल

<ol type="a"> 

मैंने आधार 10 संख्या को आधार 26 में ए-जे अंकों के साथ कनवर्ट करने का प्रयास किया।
लेकिन यह वही नहीं है जो मैं चाहता था।

IN  WANT  GET  
----------------------- 
1 => a  <= a 
2 => b  <= b 
3 => c  <= c 
4 => d  <= d 
5 => e  <= e 
6 => f  <= f 
7 => g  <= g 
8 => h  <= h 
9 => i  <= i 
10 => j  <= j 
11 => k  <= k 
12 => l  <= l 
13 => m  <= m 
14 => n  <= n 
15 => o  <= o 
16 => p  <= p 
17 => q  <= q 
18 => r  <= r 
19 => s  <= s 
20 => t  <= t 
21 => u  <= u 
22 => v  <= v 
23 => w  <= w 
24 => x  <= x 
25 => y  <= y 
26 => z  <= az 
27 => aa  <= aa 
28 => ab  <= ab 
29 => ac  <= ac 

private final static char[] digits = { 
'0' , 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 
'g' , 'h' , 'i' , 'j' , 'k' , 'l' , 
'm' , 'n' , 'o' , 'p' , 'q' , 'r' , 
's' , 't' , 'u' , 'v' , 'w' , 'x' , 'y' , 'z' 
}; 

private static String numberToAlphaNumeric(long i, int radix) { 

    char[] buf = new char[65]; 
    int charPos = 64; 
    boolean negative = (i < 0); 
    if (!negative) { 
     i = -i; 
    } 
    while (i <= -radix) { 
     buf[charPos--] = digits[(int)(-(i % radix))]; 
     i = i/radix; 
    } 
    buf[charPos] = digits[(int)(-i)]; 
    if (negative) { 
     buf[--charPos] = '-'; 
    } 
    return new String(buf, charPos, (65 - charPos)); 
} 

public static String numberToAlphaNumeric(long number) { 
    ArrayList<String> list = new ArrayList<String>(); 
    for(int j = 0; list.size() != number; j++) { 
     String alpha = numberToAlphaNumeric(j, digits.length); 
     if(!alpha.contains("0")) { 
      list.add(alpha); 
     } 
    } 
    return list.get(list.size()-1); 
} 

मेरे 2 विचार:

अगर मैं अंक के लिए एक नया प्रमुख प्रतीक का विस्तार और एक आधार 27 नंबर करने के लिए मेरा नंबर परिवर्तित, मैं हर में नए प्रतीक है ले जिस पर गलत है और मैं इन्हें फ़िल्टर कर सकता हूं।

यह बहुत अक्षम और बदसूरत है, लेकिन मेरे पास कोई और विचार नहीं है। आम तरीका क्या है?

+0

आप परिणामों है कि आप नहीं चाहते दिखाया है - केवल 26 पर असफल रहने, जहाँ तक मैं बता सकता हूँ - लेकिन कोड क्या नहीं है ... –

+4

क्योंकि आपके 0 को 'ए' – perilbrain

+0

मैप किया जाना चाहिए था, मैंने अभी सूची-शैली का उपयोग करके परीक्षण किया है: निचला-अल्फा, और 26 सिर्फ ** z ** होना चाहिए, नहीं ** az ** । –

उत्तर

9

यह मूल एल्गोरिदम है। एक StringBuffer प्रयोग करें यदि आप और अधिक कुशल होने की जरूरत:

public static String getAlpha(int num) { 

    String result = ""; 
    while (num > 0) { 
     num--; // 1 => a, not 0 => a 
     int remainder = num % 26; 
     char digit = (char) (remainder + 97); 
     result = digit + result; 
     num = (num - remainder)/26; 
    } 

    return result; 
    } 

यह करने के लिए एक और तरीका है 26 आधार है, और फिर स्ट्रिंग आपको मिल में हर किरदार के लिए 97 को जोड़ने के लिए कन्वर्ट करने के लिए होगा।

1

स्टोर एक सरणी सूचकांक में जेड 1 से 26 करने के लिए शुरू करने के लिए कहते हैं, alphArr []

i = Input 

If(i<26){ 
    Print alphArr[i] 
    }else{ 
    //Consider i=27 
    count = i/26 (here, count=1) 
    alphabet = i%26 (here alphabet =1) 
    print alphArr[count]+””+alphArr[alphabet] // Which will be “AA” 
}