我有一个要求,我需要在给定字母和数字时返回字母。例如,如果给定 C 和 4,我将返回 C+4 = G 如果给定 C 和 -2,我将返回 C + (-2) = A
如果我有 AA,那么 AA + 4 = AD,所以我总是想从字符串中取出最后一个字符。
我正在考虑使用字符串数组来存储字母,但这似乎是一种糟糕的解决方案。有什么方法可以让我做得更好吗?
字母字符都已按顺序排列,您只需在其中添加一个数字即可获得另一个。
我想你想要这样的东西:
addToChar('A', 4);
char addToChar(char inChar, int inNum)
{
return (char)(inChar + inNum);
}
您可能还想检查它是小于“A”还是大于“Z”。
回应您的编辑:
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;
}
试试这个例如:
public class example {
public static void main(String[] args) {
int number = 2;
char example = 'c';
System.out.println((char)(example+number));
}
}
这是更新问题的示例:
仍然需要验证输入数字和输入字符串(让我们说如果数字是 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);
}
}
您不需要将字母存储在数组中;这就是 ASCII 具有连续顺序的所有字母的原因之一。
执行数学运算,将 隐式转换char
为 a int
,然后将结果转换为 a char
。你必须检查你没有在“A”之前或“Z”之后去。
这是一个ASCII 表参考。
你曾经在谷歌上搜索过字符集吗?与 ASCII 一样,字符已经由数字表示。
首先,使用演员将您的角色转换为int
a,然后添加您的int
,并将其转换回 a char
。例如:
char c = 'c';
int cInt = (int)c;
int gInt = cInt + 4;
char g = (char)gInt; // 'G'