gpt4 book ai didi

java - 为什么quot需要反复减1?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:23:13 24 4
gpt4 key购买 nike

这个问题是基于这个线程 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;

根据我的理解,需要使用 quot 将列编号映射到距“a”的距离。这意味着 1 应该映射到距“a”的 0 距离,2 到距“a”的 1 距离,依此类推。但是你不需要减去这个一次来解释这个吗?不在循环中我的意思是最终,

            quot = quot / 26;

将停止循环。

最佳答案

Excel 列不是普通的数字系统。它不仅仅是 base 26。第一个两位数列是“AA”。在任何正常的数字系统中,前两位数由两个不同的数字组成。基本上,在 excel 列编号中,没有“零”数字。

为了解决这种差异,每次迭代都会减去 1。

关于java - 为什么quot需要反复减1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28119064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com