此问题基于此主题Programming Riddle: How might you translate an Excel column name to a number?
以下是该问题的代码,用于将列号转换为Excel列名
public String getColName (int colNum) {
String res = "";
int quot = colNum;
int rem;
/*1. Subtract one from number.
*2. Save the mod 26 value.
*3. Divide the number by 26, save result.
*4. Convert the remainder to a letter.
*5. Repeat until the number is zero.
*6. Return that bitch...
*/
while(quot > 0)
{
quot = quot - 1;
rem = quot % 26;
quot = quot / 26;
//cast to a char and add to the beginning of the string
//add 97 to convert to the correct ascii number
res = (char)(rem+97) + res;
}
return res;
}
我彻底测试了这段代码并且它有效,但是我有一个问题是这条线需要重复才能工作
quot = quot - 1;
根据我的理解,需要使用“将列号映射到远离' a的距离”。这意味着1应该映射到0距离距离' a'距离' a'等等。但是,你不需要减去这一次来解释这一点吗?不是循环 我的意思是最终,
quot = quot / 26;
将停止循环。
答案 0 :(得分:4)
Excel列不是普通数字系统。这不仅仅是基数26.第一个两位数的列是“AA”。在任何正常数字系统中,前两位数字由两个不同的数字组成。基本上,在excel列编号中,没有“零”数字。
为了解释这种差异,每次迭代都减去1。