关于java 中数组索引越界问题 10

publicclassRMBTest{String[]hanZi=newString[]{"零","一","二","三","四","五","六","七","八","九"}... public class RMBTest{ String[] hanZi = new String[]{ "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" }; String[] unitStr = new String[]{ "亿","千","百","十","万","千", "百", "十" }; public String toHanString( String strNum ) { // record result String result = ""; int len = strNum.length( ); for (int i = 0; i < len; i++) { // convert char to int int num = strNum.charAt( i ) - '0'; // 如果i不是最后一个数字,并且num不为零 if ( (i != len - 1)&&num !=0 ) {
/*我想问的就是这个unitStr的数组,现在这种情况是可以
运行的(稍后会附上一张结果图),但是将这一段变成
String t = unitStr[(unitStr.length -1) -(len - 2) +i];//把它放到了if外面
if ( (i != len - 1)&&num !=0 )
{ result = result + hanZi[num] + t; }
只不过是用一个String类型的变量记录它然后放到了if
外面却出现了数组索引越界的报错(难道改变了作用域就不能用了?)
是不是String 不能这样用啊?希望好心人能帮帮忙。
*/
result = result + hanZi[num] + unitStr[(unitStr.length -1) -(len - 2) +i] ; } else { result = result + hanZi[num]; } } return result; } public static void main(String[] args) { RMBTest test = new RMBTest(); System.out.print( test.toHanString("123456789")+"\n" ); }}//结果图1和图2
展开
 我来答
浮云瞎了眼
2015-01-22 · 超过23用户采纳过TA的回答
知道答主
回答量:44
采纳率:0%
帮助的人:40.4万
展开全部
你在循环里面 把unitStr的长度减少了 你应该把最后一个字符置为'\0'
在你的循环里面的循环次数也要修改 因为你字符串长度减少了 你循环次数到最后就会越界
更多追问追答
追问
我还是不太明白,String t = unitStr[(unitStr.length -1) -(len - 2) +i] 这一句放在if里能运行,放在if外面就不能运行了。他们都是在循环里面啊,长度为什么会减少?我感觉是String作用域的问题啊
追答
你在循环条件里面 不要写i<len  写i<unitStr.lenth    你如果谨慎点的话 可以在拿出字符时  把字符串的'\0'重新复制一下   其中还需要做移动原来位置的操作  看你想完成的功能是什么
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式