我正在尝试为HashTable编写一个移位折叠方法。
该方法传递一个key(int)值,键值被分成数字组,并添加组。组中的位数应与arraySize相对应。
EX)输入arraySize = 15; key = 123;
输出:12 + 3 = 15
然而,我写的方法是落后的。
public class C{
public int folding(int key)
{
int digit =1; // how many digits in arraySize?
int arraySize =15; //if 15, 2-digits
int hashVal =0;
while(arraySize >0 ){ //digit is 100;
digit *= 10;
arraySize /= 10;
}
while(key>0){ //hashVal should be 15
hashVal +=key%digit;
key /= digit;
}
System.out.print(hashVal);
return hashVal;
}
public static void main(String[] args) {
C g = new C();
g.folding(123);
}
}
我得到了
1 + 23 = 24
对原始代码进行一些修改是否可以修复它以获得预期的输出?
或者唯一的方法是将arraySize(int)转换为String并解析keyValue的长度吗?