a2bc3d1转换成aabcbcbcd

为什么代码中提取循环次数的多循环了???

import java.util.Scanner;

/*

  • 请完成右侧函数,该函数功能是解密一个给定字符串,解密的规则是将两个数字间(前面没有数字的情况下算开头和数字间)的字符串重复数字次数,
  • 数字不会超过int表示的范围。
  • 例如:a2bc3d1转换成aabcbcbcd。
    */
    public class qunaerbishi {

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    char ch;//ch用于记录当前字符。
    int num;//num用于记录循环次数。
    System.out.println("请输入序列:");
    String s,r="";//s用于记录输入串,r用于记录输出串。
    String temp;//用于记录循环字符串。
    Scanner in=new Scanner(System.in);
    s=in.nextLine();
    in.close();
    for(int i=0;i // ch=s.substring(i, i+1).charAt(0);
    ch=s.charAt(i);
    temp="";
    int t=i;//用于记录当前i的位置。
    int flag=0;//用于记录是否为连续字符串。
    while(i='a'||ch<='Z'&&ch>='A')){
    if(temp!="")
    flag++;
    temp+=ch;
    i++;
    // ch=s.substring(i, i+1).charAt(0);
    ch=s.charAt(i);
    System.out.println("temp..."+temp);
    }
    num=0;
    while(i='0')){
    if(num==0)
    num=ch-'0';
    else
    num=num*10+(ch-'0');
    i++;
    if(s.length()>i+1)
    // ch=s.substring(i, i+1).charAt(0);
    ch=s.charAt(i);
    else break;
    //为什么这里多循环了次数?
    System.out.println("num..."+num);
    }
    //为什么这里多循环了次数?
    System.out.println("num2..."+num);
    for(int j=0;j r+=temp;
    }
    // if(flag>0)
    i=t+flag+1;
    // i=t;
    }
    System.out.println("原始字符串为 :"+s);
    System.out.println("解密后字符串为:"+r);

    }

}

你这是“去哪儿网”笔试题吧? 写得这么复杂啊,我记得蛮简单的

是的,结果是正确的,但是中间循环次数怎么就多了,你的是怎么写?