关于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 展开
/*我想问的就是这个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 展开
1个回答
展开全部
你在循环里面 把unitStr的长度减少了 你应该把最后一个字符置为'\0'
在你的循环里面的循环次数也要修改 因为你字符串长度减少了 你循环次数到最后就会越界
在你的循环里面的循环次数也要修改 因为你字符串长度减少了 你循环次数到最后就会越界
更多追问追答
追问
我还是不太明白,String t = unitStr[(unitStr.length -1) -(len - 2) +i] 这一句放在if里能运行,放在if外面就不能运行了。他们都是在循环里面啊,长度为什么会减少?我感觉是String作用域的问题啊
追答
你在循环条件里面 不要写i<len 写i<unitStr.lenth 你如果谨慎点的话 可以在拿出字符时 把字符串的'\0'重新复制一下 其中还需要做移动原来位置的操作 看你想完成的功能是什么
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询