为了账号安全,请及时绑定邮箱和手机立即绑定

怎么理解下面这段代码??求教大神!!

怎么理解下面这段代码??求教大神!!

望远 2016-09-09 06:51:38
package com.gnnu2016;import java.util.ArrayList;import java.util.Arrays;import java.util.Scanner;public class randomAssortment { /** * 定义一个保存所有随机组合情况的动态数组 */ public static ArrayList<String>list=new ArrayList<String>(); public static void main(String[] args) { long num = -1; Scanner input=new Scanner(System.in); do{ System.out.println("请输入一个正整数:"); try{ num=input.nextInt(); }catch(Exception e){ input.nextLine(); System.out.println("输入错误,请重新输入!!"); } }while(num<0); String string=Long.toString(num); String[]strings=string.split(""); //调用函数,实现对list的填充所有的排列组合情况 getRandom(strings,0,strings.length-1); //打印输出所有情况 System.out.println("一共有"+list.size()+"种不同的排列,分别是:"); for(int i=0;i<list.size();i++){ System.out.print(list.get(i)+"  "); if((i+1)%10==0){ System.out.println(); } } System.out.println(); } public static void getRandom(String[]strings,int start,int end){ StringBuffer sBuffer=new StringBuffer(); String string=null; /* * 一种排列情况已经出来了 */ if(start==end){ for(int i=0;i<=end;i++){ sBuffer.append(strings[i]); } string=sBuffer.toString(); //判断该组合情况是否已经存在,如果不存在就添加该情况 if(!list.contains(string)){ list.add(string); } }else{ for(int i=start;i<=end;i++){ String temp=strings[start];//主要是else里面这段代码怎么理解?? strings[start]=strings[i]; strings[i]=temp; //递归调用 getRandom(strings, start+1, end); temp=strings[start]; strings[start]=strings[i]; strings[i]=temp; } } }}
查看完整描述

3 回答

已采纳
?
ziom

TA贡献948条经验 获得超1109个赞

注释已经写得很全了,还要怎么说明

查看完整回答
2 反对 回复 2016-09-09
  • 望远
    望远
    注释还是我自己写的,就是感觉似懂非懂。。
  • ziom
    ziom
    那等我有时间了帮你重写一遍注释把。
  • 望远
    望远
    我已经懂了,非常感谢
点击展开后面3
?
weenhall

TA贡献121条经验 获得超57个赞

我只能说赶紧转行把,你真不适合

查看完整回答
1 反对 回复 2016-09-09
  • 望远
    望远
    嗯嗯,但是我想试试!
  • weenhall
    weenhall
    建议你先看原理性的东西,先把基本的搞懂了,再联系实践
  • 望远
    望远
    嗯嗯,谢谢指点
?
承_风

TA贡献2条经验 获得超3个赞

挺清楚的了

查看完整回答
反对 回复 2016-09-28
  • 3 回答
  • 0 关注
  • 1659 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信