降序排列——对于一个大于3位数的任意整数

/* (程序头部注释开始) </p><p>* 程序的版权和版本声明部分 
* Copyright (c) 2011, 烟台大学计算机学院学生                              
* 作    者:   李兆庆                         
* 完成日期:   2012      年   9    月        20   日 
* 输入描述:   
* 问题描述及输出: 
* 实现功能:对于一个大于3位数的任意整数,输出其降序数。例如,整数82319,则其降序数是98321.
* 程序头部的注释结束 
*/

import javax.swing.JOptionPane;
public class Num {  
  
    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
        // TODO Auto-generated method stub  
    	String str=JOptionPane.showInputDialog("请输入一个大于三位数的整数");
    	
    	int w = str.length();
    	
    	System.out.println("您输入的数字位数为:"+w);
    	
        int a = Integer.parseInt(str);
        
        System.out.println("您输入的数字为:"+a);
        
    	sort( a, w);  
    	
    }  
    static void sort(int n ,int m){  
          
        int s = 1,k=0; 
        
        int [] a = new int [m];
        
        for (int i = 1; i < m; i++)
        {
        	s = s*10;
        }
        
        k = s;                               //将s的值保存下来,最后获得目标数字时使用。
        
        for (int i = 0; i < m; i++)          //将输入数的各个位数对应的数值分别存放在a数组中。
        {
        	a[i] = n / s;
        	
        	n = n % s;
        	
        	s = s / 10;
           // System.out.print("   "+x)           
        }
        
          
        for (int i = 0; i < m ; i++)        //将数组中的元素进行由高到低的排序
         {  
               for (int j = 0; j < m-1; j++)  
               {  
                   int t;  
                     
                  if (a[j] < a[j+1])  
                  {  
                      t = a[j];  
                        
                     a[j] = a[j + 1];  
                        
                     a[j + 1] = t;  
                       
                  }  
               }  
           }  
          
        int e = 0;   
        
        for (int i = 0; i< m; i++)               //得到降序后的目标数字。
        {
        	e = e +a[i]*k;
        	k=k/10;
        	//System.out.println(e);
        }
             System.out.println("降序数为:"+e);  
             System.out.println(m);
          
    }  
}  


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值