Java中,任意输入一个整数,如何判断是几位数?

SHKJ1991 华育国际 学员  2016-08-02 09:46:36
之前知道用求余的方法来判断每个位上的数字,但是现在想通过做一个简单程序,输入一个任意的数,输出它每位上的数,但是思路的第一步就是,先要判断出它是几位数。求方法!!!
...全文
34658 2 收藏 18
写回复
18 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
引用 4 楼 RuffianJay 的回复:
我觉得没必要这样做, 直接除以10 , 取余 , 然后 拿商再除10 取余,循环几次就得到结果了啊.
这样节省效率快
回复
Nonoas 2020-03-07
引用 8 楼 yeye13142的回复:
public class HelloWorld{ public static void main(String[] args){ int num = 222; int count = 0; if((0<=num)&&(num<=9)){ System.out.println("它是1位的数");} if((10<=num)&&(num<=99)){ System.out.println("它是2位的数");} if((100<=num)&&(num<=999)){ System.out.println("它是个3位的数!");}
你是个鬼才吧,如果有几十位呢
回复
Nonoas 2020-03-07
你是个鬼才吧,如果有几十位呢
回复 1
臨鱼羡上天 2020-03-05
0418怎么判断为4位数
回复 1
Z113014 2019-12-13
Scanner input =new Scanner (System.in);
System.out.println("输入一个整数");
int n = input.nextInt();
int m=0;
while(n!=0){
n = n/10;
m+=1;
}
System.out.println(m);
}
除10去一位 直到为0,输出m累加值就是几位数,
回复 2
qq_27693783 2019-11-04
Math.log10()
回复
引用 4 楼 RuffianJay 的回复:
我觉得没必要这样做, 直接除以10 , 取余 , 然后 拿商再除10 取余,循环几次就得到结果了啊.
用char更方便
回复
qq_35452990 2018-12-18
取10的对数吧,再去小数位+1
回复
阿顾同学 2018-03-30
你试试下面这个程序,循环除以10看结果是不是0,然后定义一个计数器,最后将计数器返回 import java.util.Scanner;//导入包 public class Test { public static void main(String[] args) { Scanner sc = new Scanner(System.in);//创建对象 System.out.println("请输入一个整数(正数或者负数都可以)"); int input = sc.nextInt();//接受输入的整数 int count = getCount(input); System.out.println(input + "是" + count + "位数"); sc.close(); } public static int getCount(int input) { int count = 1; while ((input = input / 10) != 0) { count++; } return count; } }
回复
Luck Young 2017-10-07
public int getLen(int x){ if(x<10) return 1; return getLen(x/10)+1; } 如果是主方法调用吧方法改为静态的就好了
回复
yeye13142 2017-07-31
public class HelloWorld{ public static void main(String[] args){ int num = 222; int count = 0; if((0<=num)&&(num<=9)){ System.out.println("它是1位的数");} if((10<=num)&&(num<=99)){ System.out.println("它是2位的数");} if((100<=num)&&(num<=999)){ System.out.println("它是个3位的数!");}
回复
「已注销」 2016-08-02
不一定非要知道长度,只要有循环结束或递归跳出条件就行了
回复
NewMoons 2016-08-02
引用 5 楼 SHKJ1991 的回复:
[quote=引用 2 楼 NewMoons 的回复:] 楼主我实在忍不住想弱弱的问你句:你是第一天编程么? 算了还是告诉你吧:
int num = 2772;
    	String str = String.valueOf(num);
    	System.out.println(str.length());
    	for(char c : str.toCharArray()){
    		System.out.println(c);
    	}
回大大,小子确实是刚开始学编程,你这个方法我还没学。经过多方咨询,小子终于知道怎么做了: 例如:int a=123; int b=(a+"").length(); 将整型转成字符串类型,测试出长度,再赋给另一个变量。 不过还是很感谢大大。[/quote] 你的代码虽然也可实现,但有点“歪门邪道”。摆摆我的看法: 虽说条条大路通罗马,但每条路必然有其好或坏的地方。 先说说为什么你的方法比较“歪门邪道”,因为代码看似简单,但可读性太差了,过一段时间你可能都搞不懂这代码要做什么。 3、4楼的意思其实指我的实现效率比较低。 确认,不过对于你尚处于小白阶段,太难的算法反而可能在你初级阶段成为你进步的绊脚石。所以不建议使用。 那什么时候用,等你真正需要效率的时候再考虑吧。 见仁见智,怎么选择你自己决定吧。
回复
SHKJ1991 2016-08-02
引用 2 楼 NewMoons 的回复:
楼主我实在忍不住想弱弱的问你句:你是第一天编程么? 算了还是告诉你吧:
int num = 2772;
    	String str = String.valueOf(num);
    	System.out.println(str.length());
    	for(char c : str.toCharArray()){
    		System.out.println(c);
    	}
回大大,小子确实是刚开始学编程,你这个方法我还没学。经过多方咨询,小子终于知道怎么做了: 例如:int a=123; int b=(a+"").length(); 将整型转成字符串类型,测试出长度,再赋给另一个变量。 不过还是很感谢大大。
回复
RuffianJay 2016-08-02
我觉得没必要这样做, 直接除以10 , 取余 , 然后 拿商再除10 取余,循环几次就得到结果了啊.
回复
bree06 2016-08-02
输出它每位上的数没有必要知道长度... 并且不建议将数字转为字符串处理.
回复
NewMoons 2016-08-02
楼主我实在忍不住想弱弱的问你句:你是第一天编程么? 算了还是告诉你吧:
int num = 2772;
    	String str = String.valueOf(num);
    	System.out.println(str.length());
    	for(char c : str.toCharArray()){
    		System.out.println(c);
    	}
回复
兔子托尼啊 2016-08-02
转为String ,然后length
回复
发帖
Java SE
创建于2007-09-28

6.2w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2016-08-02 09:46
社区公告
暂无公告