shdsb 2011-01-23 14:03
浏览 205
已采纳

关于StringBuffer的问题

有一组字符串我想把前面的“0”都去掉用了以下方法
public static void main(String[] args) {

    StringBuffer scate =new StringBuffer("00000000004998400");
    String charat = "";
    for(int i=0;i<scate.length();i++){
        charat = scate.charAt(0)+"";
        if("0".equals(charat)){
            scate.deleteCharAt(0);
        }
    }
    System.out.println(scate);
}

打印出来的是:04998400
如果我用以下方法
public static void main(String[] args) {

    StringBuffer scate =new StringBuffer("00000000004998400");
    String charat = "";
    StringBuffer scate1 = new StringBuffer(scate);
    for(int i=0;i<scate.length();i++){
        charat = scate1.charAt(0)+"";
        if("0".equals(charat)){
            scate1.deleteCharAt(0);
        }
    }
    System.out.println(scate1);
}

打印出来的是:4998400
请问哪位兄弟能解释一下为什么会出现这种情况??

  • 写回答

2条回答 默认 最新

  • haha662 2011-01-23 14:54
    关注

    那是因为因为你的第一for循环的判断条件是不断在变化的,你没delete一位,scate的长度就变少一位,所以当你截掉前9个0时,scate的长度已经是8了,下次循环就不符合条件了,但你的第二个for就不一样了,条件是;i<scate.length(); scate.length()是不会变的,所以能截掉前面的0

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿