A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 黄文伯 于 2013-5-8 12:27 编辑

需求: 编写一个程序,把变量n的初始值为5814,然后利用除法和取余运算把变量n的每一个数字都抽出来并打印出来。
输出结果为: n=5814 The digits of n are 5,8,1,4

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 直接用Integer封装,转String,转Char[],打.

查看全部评分

13 个回复

倒序浏览
这个我知道啦。
以前做过。    5814%1000
5814/10%100
5814/100%10
5814/1000
hoho,想不到就难。想到了就是小case。
回复 使用道具 举报
我没啥好办法,这么着吧
写一个for循环
判断给定的数(5814)是不是大于10,100,1000,直到判断出不大于的位数
再除以倍数,获取最大位。然后减掉。
迭代。
完成
回复 使用道具 举报
public static void main(String[] args) {
                int num = 5841;
                method(5841);
               
        }
        public static void method(int  num){
                int ge = num % 10;
                int shi = num/10%10;
                int bai = num/100%10;
                int qian = num/1000;
                System.out.println("n="+num+" The digits of n are"+ qian+","+bai+","+shi+","+ge);
        }
不知道你是不是这个意思!
回复 使用道具 举报

  1. /*这个小程序,用于只要不超过long类型最大值,任意正整数都可以用,健壮性相对较强*/
  2. import java.util.*;
  3. class Test
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                 long num = 581298712;
  8.                 long i=0;
  9.                 List<Long> list = new ArrayList<Long>();   //创建集合,后面存储,反转用
  10.                 while(num>0)
  11.                 {
  12.                         i = num%10;
  13.                         num = num/10;
  14.                         list.add(i);
  15.                 }
  16.                 Collections.reverse(list);    //反转
  17.                 System.out.println(list);
  18.         }
  19. }
复制代码
回复 使用道具 举报
曹睿翔 发表于 2013-5-7 22:30
我没啥好办法,这么着吧
写一个for循环
判断给定的数(5814)是不是大于10,100,1000,直到判断出不大于的位 ...

其实直接%10,在除以10,从后往前取,取了之后放到集合中,然后再集合反转,之后再取出来就好了
回复 使用道具 举报
曹睿翔 发表于 2013-5-7 22:30
我没啥好办法,这么着吧
写一个for循环
判断给定的数(5814)是不是大于10,100,1000,直到判断出不大于的位 ...

看来抢沙发也是学问了!
不错!
回复 使用道具 举报
将数据转成字符数组操作,过程很简单,现将数据转成字符串,再将字符串转成字符数组,打印输出就好
import java.util.Arrays;
import java.util.Scanner;//导入输入流所需要的包

class TransIntTest {

        /**
         * @param args
         */
        private static char [] arr;//存储获取的字符数组
        private static String str="";//存储将数据转换后的字符串
       
        public static void main(String[] args) {
                // TODO Auto-generated method stub
               
                Scanner input = new Scanner(System.in); //得到输入引用对象
                System.out.println("请输入一个整数:");
                Integer num =input.nextInt();              //获取输入的数据
               
               
                Trans(num);//转换函数
                sop(arr);//打印输出

        }
        public static  void Trans(Integer num)
        {
                //System.out.println(num);
                str =num.toString();//将数据转换成字符串
                arr=str.toCharArray();//将字符串转成字符数组
               
        }
        public static  void sop(char[] arr)//打印输出函数
        {
                for(int j =0;j<arr.length;j++)
                        System.out.print(arr[j]+" ");//输出数组
        }

}
回复 使用道具 举报
尹桥印 发表于 2013-5-7 22:20
呃,这个占楼
代码如下,解释在注释中就是这样

这是最简单的代码,果断支持一下
回复 使用道具 举报
xiaohu1218 发表于 2013-5-7 23:22
将数据转成字符数组操作,过程很简单,现将数据转成字符串,再将字符串转成字符数组,打印输出就好
import  ...

这应该是优化之后的方法了吧,佩服
回复 使用道具 举报
孙金鑫 发表于 2013-5-7 22:51

这段代码优化的也满好的,学习了:handshake
回复 使用道具 举报
沈艳南 发表于 2013-5-7 22:34
public static void main(String[] args) {
                int num = 5841;
                method(5841);

是的,果断支持一下
回复 使用道具 举报
  1. class Demo03
  2. {
  3.         /**
  4.          * 需求: 编写一个程序,把变量n的初始值为5814,然后利用除法和取余运算把变量n的每一个数字都抽出来并打印出来。 输出结果为: n=5814
  5.          * The digits of n are 5,8,1,4
  6.          * 思路:1,分别定义四个变量用来表示个位、十位、百位和千位;
  7.          *             2,个位可以通过n对10取余可得;
  8.          *             3,十位可以通过n先除以10,然后再对10取余可得;
  9.          *             4,百位可以通过n先除以100,然后再对10取余可得;
  10.          *             5,千位可以通过n除以1000得到。        
  11.          */
  12.         public static void main(String[] args)
  13.         {
  14.                 int n = 5814;  //定义变量n,并设置初始值为5814
  15.                 int gw,sw,bw,qw;//分别定义四个变量表示个位,十位,百位和千位
  16.                 gw = n%10;
  17.                 sw = n/10%10;
  18.                 bw = n/100%10;
  19.                 qw = n/1000;
  20.                 System.out.println("The digits of " +n+ " are " +qw + ","+bw+","+sw+ ","+gw+".");
  21.         }
  22. }
复制代码
这是自己写的最简单的,谢谢各位的优化代码
回复 使用道具 举报
黄文伯 发表于 2013-5-8 12:30
这应该是优化之后的方法了吧,佩服

多谢支持哈,我只是用java中提供的方法实现的,之前也有人问过这个问题,我当时是先判断位数,再用%算法算的,代码挺长的,然后就写了这个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马