日期:2014-05-20  浏览次数:20585 次

高分,求一段算法:字符串转换为循环
我有一个字符串
String a="100,200,1000";
现在想实现一下这段代码
for(int i=0;i<100;i++){
 for(int i=0;i<200;i++){
  for(int i=0;i<1000;i++){

  }
 }
}
可是,我的a中的字符串的长度和位数都不一定,或许是String a="100,200,1000,9";
求一段简洁程序,实现上边逻辑

------解决方案--------------------
Java code

String[] cha = a.split(a,",");
int n = cha.length;
int index=n;
while(index != 0){
 for(int i =0; i <cha[index]; i++)
{//TODO}
}

------解决方案--------------------
Java code
doFor(List list){
for(int i=0;i<list.get(0);i++){
//dosomething
 list.remove(0);
 if(list.size()>0){
    doFor(list);
  }
}
}

------解决方案--------------------
Java code

package com.capinfo.test;

public class StringTest {
    public static void main(String[] args) {
    
        String s="100,200,1000,9,2000";
        digui(s);
    }
    /**
     * @param s
     * @author sundful
     * @vesion 1.0
     */
    public static void digui(String s)
    {
        String s1="";
        String s2="";
        if("".equals(s) || s.trim().length()<0) return;
        int num=s.indexOf(",");
        if(num !=-1)
        {
             s1=s.substring(0,num);
             s2=s.substring(num+1);
             for(int i=0;i<Integer.parseInt(s1);i++)
             {
                 digui(s2);
                 System.out.println(i);
             }
        }
    }
}

------解决方案--------------------
搂主,我觉得我的思路已经非常好了,
你能不能实践一下,总不能等着别人都做好吧。

------解决方案--------------------
以下应该可以满足楼主您的要求,用递归。
public class MTest {

private static int count = 1;
public static void main (String [] args) {
String a = "1,7,3,4";
String[] lens = a.split("[,]");
doLoop(lens, 0);
}

public static void doLoop(String [] lens, int index) {
if (index != lens.length) {
int range = Integer.parseInt(lens[index]);
for (int i = 0; i < range; i++) {
doLoop(lens, index + 1);
}
} else {
System.out.println("doLoop" + String.valueOf(count));
count++;
}
}
}
------解决方案--------------------
Java code
public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] a = {1,1,2,3};
        execute(a,0);
    }
    
    public static void execute(int[] a,int index){       
        if (index >= a.length)
            return;
        for (int i = 0; i < a[index]; i++){
            //some code here                       
            execute(a,index + 1);
            
        }
    }

------解决方案--------------------
Java code
        String   a="1,2,2,3"; 
        String[] arr = a.split(",");
        int len = arr.length;
        int[] loop = new int[arr.length];
        int[] curr = new int[arr.length];
        for(int i=0;i<loop.length;i++)
            loop[i] = new Integer(arr[i]).intValue();
        
        for(int i=0;curr[0]<loop[0];i++){

            for(int j=0;j<loop.length;j++)
                System.out.print(curr[j]+"\t");
            System.out.println();

            curr[len-1]++;
            
            for(int j=len-1;j>0;j--){
                if(curr[j]==loop[j]){
                    for(int k=j;k<len;k++)
                        curr[k]=0;
                    curr[j-1]++;
                }
            }
            
            if(i>=loop[len-1]){
                i=0;
            }
            
        }