我有一個要求,在給定字母和數字時需要返回字母表。如果給定,C和4 I將返回C + 4 = G 同樣如果給出C和-2,我將返回C +( - 2)= A如何獲得alphabates字母數字並對其進行操作
如果我有AA那麼AA + 4 = AD所以我會一直想從字符串中取出最後一個字符。
我想使用字符串數組來存儲字母,但它似乎有點不好的解決方案。有什麼辦法可以讓它做得更好?
我有一個要求,在給定字母和數字時需要返回字母表。如果給定,C和4 I將返回C + 4 = G 同樣如果給出C和-2,我將返回C +( - 2)= A如何獲得alphabates字母數字並對其進行操作
如果我有AA那麼AA + 4 = AD所以我會一直想從字符串中取出最後一個字符。
我想使用字符串數組來存儲字母,但它似乎有點不好的解決方案。有什麼辦法可以讓它做得更好?
字母字符都已經按順序排列,所有您需要做的就是向其中一個添加數字。
我想你想是這樣的:
addToChar('A', 4);
char addToChar(char inChar, int inNum)
{
return (char)(inChar + inNum);
}
您可能要檢查它是否是比「Z」以及低於「A」或更大。
在回答您的編輯:
void addToChar(char[] inChars, int inNum)
{
for (int i = inChars.length-1; inNum != 0 && i >= 0; i--)
{
int result = inChars[i]-'A'+inNum;
if (result >= 0)
{
inNum = result/26;
result %= 26;
}
else
{
inNum = 0;
while (result < 0) // there may be some room for optimization here
{
result += 26;
inNum--;
}
}
inChars[i] = (char)('A'+result);
}
}
爲了應對溢出:(有點低效率)('Z' + 1
輸出'AA'
)
static String addToChar(String inChars, int inNum)
{
String output = "";
for (int i = inChars.length()-1; inNum != 0 || i >= 0; i--)
{
if (i < 0 && inNum < 0)
return "Invalid input";
int result = i >= 0 ? inChars.charAt(i)-'A'+inNum
: -1+inNum;
if (result > 0)
{
inNum = result/26;
result %= 26;
}
else
{
inNum = 0;
while (result < 0)
{
result += 26;
inNum--;
}
}
output = (char)('A'+result) + output;
}
return output;
}
您不需要在字符串中存儲字母;這是ASCII爲什麼連續排列所有字母的原因之一。
執行數學運算,將數學運算隱式轉換爲int
,然後將結果轉換爲char
。你必須檢查你是否在'A'之前或'Z'之後。
你有沒有谷歌關於字符集?與ASCII一樣,一個字符已經由一個數字表示。
首先,將您的角色轉換爲int
,然後添加您的int
,並將其轉換回char
。例如:
char c = 'c';
int cInt = (int)c;
int gInt = cInt + 4;
char g = (char)gInt; // 'G'
這是更新的問題的例子:
仍然需要驗證輸入數量和輸入的字符串(可以說,如果數字是124發生了什麼?)
public class example {
public static void main(String[] args) {
int number = 1;
String example = "nicd";
//get the last letter from the string
char lastChar = example.charAt(example.length()-1);
//add the number to the last char and save it
lastChar = (char) (lastChar+number);
//remove the last letter from the string
example = example.substring(0, example.length()-1);
//add the new letter to the end of the string
example = example.concat(String.valueOf(lastChar));
//will print nice
System.out.println(example);
}
}
這個不清楚。你是說你想得到一些函數'foo(char c,int i)',它返回''G''foo('C',4)'?如果是這樣,那只是'c + i'。 – 2013-02-13 21:34:35
'A'和'-2'的結果是什麼? – Pshemo 2013-02-13 21:35:37
看起來你不需要存儲整個字母表,但只有一個字母?!數學表達式可以比' + '更復雜嗎?一般來說,因爲你想做數學,你必須確保你的信件最終被轉換爲數字,否則你將無法添加它們。 –
Thomas
2013-02-13 21:35:52