2013-05-05 56 views
1

所以,我需要做的是將一個字符數組轉換爲數字數組。將字符數組轉換爲Java數組數組

我知道這聽起來像一個奇怪的要求,但這裏是我一直在努力做的事情:

有一個數組是這樣的:

charArray[0] = e; 
charArray[1] = b; 
charArray[2] = p; 

,並將它translatated到:

numArray[0] = 5; 
numArray[1] = 2; 
numArray[2] = 16; 

所以到它在字母表中的位置,將翻譯的字符(如「a」是第一個字母「b」是第二等)

這樣做的最好方法是什麼?我試圖一個接一個地做,但後來我意識到我會有太多的代碼行,它只是嵌套if語句,我認爲可能有更好的方法來做到這一點。 (我的方法是if charArray[0] = a then numArray[0] = 1,並經過這樣的每一個字母,直到你到達if charArray[0] = z then numArray[0] = 26,但是這將需要26個不同的if語句在char數組中,這將是一個可怕的方式。這樣做在我看來,因爲我的字符數組極長)

回答

7

您可以使用一個技巧對於每個索引i

numArray[i] = charArray[i] - 'a' + 1; 

「經書」做這件事的方式更是:

final String letters = "abcdefghijklmnopqrstuvwxyz"; 
. . . 
numArray[i] = letters.indexOf(charArray[i]) + 1; 

那麼任何位置i這樣charAray[i]不是小寫字母將在numArray[i]最終成爲0。用訣竅,numArray[i]的價值將是不可預知的。

1

你可以簡單:

numArray[i] = charArray[i] - 'a' + 1;

說明:

看着ascci table你會看到每個char十進制值

a十進制值的97所以,如果你刪除它97再加1你得到1

同爲b ... z,刪除97(a)從98(b )將於1,你加1得到2 ..等..

0

假定所有字符都是小寫的,你可以寫:

numArray[0] = (charArray[0] - 'a' + 1); 

如果你有小寫和大寫,你可以,如果使用的語句,如:

if (charArray[0] >= 'A' && charArray[0] <= 'Z') { 
    numArray[0] = (charArray[0] - 'A' + 1); 
} else { 
    numArray[0] = (charArray[0] - 'a' + 1); 
} 
相關問題