package com.cn.test;
public   class   Test{ 
    String[]   list; 
    StringBuffer   sb   =   new   StringBuffer(); 
    int   start; 
    Test(String   in){ 
        list   =   in.split(","); 
printList(); 
System.out.print(sb); 
    } 
    void   replaceStr(int   c1,int   c2){ 
        String   temp   =   list[c1]; 
        list[c1]   =   list[c2]; 
        list[c2]   =   temp; 
    } 
    void   printList(){ 
        if(start==list.length-1) 
            for(int   i=0;i <list.length;i++) 
                sb.append(list[i]+(i==list.length-1?"\n":",")); 
        else 
            for(int   i=start;i <list.length;i++){ 
                replaceStr(start++,i); 
                printList(); 
                replaceStr(i,--start); 
            } 
    } 
    public   static   void   main(String   args[]){ 
       new   Test(args[0]);
    
    } 
} 而且debug会产生source not found ??????

解决方案 »

  1.   

      new   Test(args[0]);
    这句产生的数组越界
      

  2.   

    楼上正解
    执行时没有带上参数,java Test aaa bbb ccc
      

  3.   

    2楼的 问下 在eclipse中执行怎么带参数?我越界了怎么改?
      

  4.   

     if(start==list.length-1) 
    start之前赋值 了???
      

  5.   

    是的,从dos下调试的时候要添加参数。
      

  6.   

    在eclipse的话没法带参数的,使用Scanner读取用户输入吧Scanner sc = new Scanner(System.in);
    new Test(sc.nextLine());
      

  7.   

    在eclipse中带参数执行
    Run菜单-->Run-->Arguments选项卡
    在Program arguments中输入参数
    多个参数以空格作为分隔符
      

  8.   

    7楼的方法,在eclipse中带参数执行  正解
      

  9.   

    回楼上的,args[]数组是执行时带用户参数时这个参数数组,如:java   Test   aaa   bbb   ccc那么args[]={"aaa", "bbb", "ccc"};
      

  10.   

    public class TestMain { /**
     * @param args
     */
    public static void main(String[] args) {

    // TODO Auto-generated method stub
    if(args.length!=0)
    for (int i = 0; i < args.length; i++) 
    System.out.println(args[i]);
    else
    System.out.println("没有参数,长度为:"+args.length);
       }
    }//希望对你有用