36进制问题

hyhu 2004-01-01 10:54:22
作项目作的昏了头一个36进制转换的trigger总是出错,帮我看看吧!
10-〉36

/**
*
*
* @param div dived number
* @param mode mod
* @param result return result
* @return StringBuffer
*/
private StringBuffer changeTo(final int div, final int mode,
final StringBuffer result) {
if (div >= mode) {
result.append(changeTo(div / mode, mode, result));
return changeTo(div / mode, mode, result);
}
else {
switch (div) {
case 0 :
return result.append('0');
case 1 :
return result.append('1');
case 2 :
return result.append('2');
case 3 :
return result.append('3');
case 4 :
return result.append('4');
case 5 :
return result.append('5');
case 6 :
return result.append('6');
case 7 :
return result.append('7');
case 8 :
return result.append('8');
case 9 :
return result.append('9');
case 10 :
return result.append('A');
case 11 :
return result.append('B');
case 12 :
return result.append('C');
case 13 :
return result.append('D');
case 14 :
return result.append('E');
case 15 :
return result.append('F');
case 16 :
return result.append('G');
case 17 :
return result.append('H');
case 18 :
return result.append('I');
case 19 :
return result.append('J');
case 20 :
return result.append('K');
case 22 :
return result.append('L');
case 23 :
return result.append('M');
case 24 :
return result.append('N');
case 25 :
return result.append('O');
case 26 :
return result.append('P');
case 27 :
return result.append('Q');
case 28 :
return result.append('R');
case 29 :
return result.append('S');
case 30 :
return result.append('T');
case 31 :
return result.append('U');
case 32 :
return result.append('V');
case 33 :
return result.append('W');
case 34 :
return result.append('X');
case 35 :
return result.append('Y');
default :
return result;
}
}
}
...全文
129 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyhu 2004-01-02
  • 打赏
  • 举报
回复
我已搞定,递归本身是有问题的但大的结构没有错,错在“result.append(changeTo(div / mode, mode, result));”改成“changeTo(div / mode, mode, result);”
"return changeTo(div / mode, mode, result);”改成“return changeTo(div % mode, mode, result);”谢谢大家参与,新年快乐!
fzd999 2004-01-01
  • 打赏
  • 举报
回复
result 的访问控制符final有问题,最好去掉
hyhu 2004-01-01
  • 打赏
  • 举报
回复
"return " has same effect with "break"? Am I right?
charlie0895 2004-01-01
  • 打赏
  • 举报
回复
没什么问题,不过我想,每个case语句后都要加个break语句
yyfhz 2004-01-01
  • 打赏
  • 举报
回复
递归好像没什么严重的问题,不过...
你对余数作转换的操作在哪里啊?
例如38=36*1+2,你的"2"呢?
d992901 2004-01-01
  • 打赏
  • 举报
回复
to:alienbat
说说我什么地方分析错了,你给解释一下,
也让我学点东西
d992901 2004-01-01
  • 打赏
  • 举报
回复
那都return了,还需要break么??
alienbat 2004-01-01
  • 打赏
  • 举报
回复
你分析的不对。递归没问题。case后面要加个break。不然它会每一条都执行。
d992901 2004-01-01
  • 打赏
  • 举报
回复
我拿一个具体的数分析一下
前提输入 36,
changeTo(36,36,result);
(div >= mode)
result.appand(changeTo(0,36,result));
changeTo(0,36,result) 的返回值是result,这里result = "0";
所以执行完result.appand(changeTo(0,36,result));之后
result = "00";
再执行 return changeTo(div / mode, mode, result);
result = "000"
所以这个递归有问题
不知道我分析的对不对

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧