public static void main(String[] args) {

ArrayList<String> alist = new ArrayList<String>();

for(int number=10000;number<50000;number++){
int j = 0;
int [] jc = new int[1000];
while(true){
//求差
int [] arr1 = fjNumber(number);
int c = getArr(arr1);
number = c;
//判断结束:遇到相等的数字了就结束
boolean f = false;
for(int i=0;i<j;i++){
if(jc[i]==c&&c!=0){
//碰到相等的就把循环圈给alist集合
int abc1 = 0;
int abc2 = 0;
for(int x=0;x<jc.length-1;x++){
for(int k=i+1;k<jc.length;k++){
if(jc[x]==jc[k]&&jc[x]!=0){
abc1 = x;//循环圈第一个位置
abc2 = k;//循环圈最后的位置
}
}
}
String abc = "";
for(int x=abc1+1;i<=abc2;i++){
if(i==abc2){
abc += ""+jc[i];
}
else{
abc += jc[i]+"-";
}
}
alist.add(abc);

f = true;
break;
}
}
if(f==true){
break;
}

//放入一个数组里面
jc[j] = c;
j++;
}
}
//遍历集合
for(int i=0;i<alist.size();i++){
System.out.println(alist.get(i));
}
                  //去掉集合里的重复
// ArrayList<String> blist = qdJh(alist);
// for(int i=0;i<blist.size();i++){
// System.out.println(blist.get(i));
// }
} //分解
public static int [] fjNumber(int number){
int [] arr = new int[5];
int a = 10000;
int b = 10;
for(int i=0;i<arr.length;i++){
if(i==0){
arr[i] = number/a;
}
else{
arr[i] = number/a%b;
}
a = a/10;
}

return arr;
}
//求差
public static int getArr(int [] arr){
//降序排序
for(int i = 0;i<arr.length-1;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]<arr[j]){
int temp;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
//最大值
int maxNum = 0;
int abc = 10000;
for(int i=0;i<arr.length;i++){
maxNum += abc*arr[i];
abc = abc/10;
}
//最小值
int minNum = 0;
int b = 10000;
for(int i=arr.length-1;i>=0;i--){
minNum += arr[i]*b;
b = b/10;
}
//差
int c = maxNum - minNum;
return c;

}