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

SHKJ1991 华育国际 学员  2016-08-02 09:46:36
之前知道用求余的方法来判断每个位上的数字,但是现在想通过做一个简单程序,输入一个任意的数,输出它每位上的数,但是思路的第一步就是,先要判断出它是几位数。求方法!!!
...全文
33989 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
回复
相关推荐
综教楼后的那个坑用双向链表实现 描述   在 LIT 综教楼后有一个深坑,关于这个坑的来历,有很多种不同的说法。其中一种说法是,在很多年以前,这个坑就已经在那里了。这种说法也被大多数人认可,这是因为该坑有一种特别的结构,想要人工建造是有相当困难的。   从横截面图来看,坑底成阶梯状,由从左至右的 1..N 个的平面构成(其中 1 ≤ N ≤ 100,000),如图:    *            * :    *            * :    *            * 8    *    **      * 7    *    **      * 6    *    **      * 5    *    ********* 4 <- 高度    *    ********* 3    ************** 2    ************** 1 平面 |  1  |2|   3    | 每个平面 i 可以用两个数字来描述,即它的宽度 Wi 和高度 Hi,其中 1 ≤ Wi ≤ 1,000、1 ≤ Hi ≤ 1,000,000,而这个坑最特别的地方在于坑底每个平面的高度都是不同的。每到夏天,雨水会把坑填满,而在其它的季节,则需要通过人工灌水的方式把坑填满。灌水点设在坑底位置最低的那个平面,每分钟灌水量为一个单位(即高度和宽度均为 1)。随着水位的增长,水自然会向其它平面扩散,当水将某平面覆盖且水高达到一个单位时,就认为该平面被水覆盖了。   请你计算每个平面被水覆盖的时间。    灌水 水满后自动扩散 | | * | * * | * * * * V * * V * * * * * * .... * *~~~~~~~~~~~~* * ** * *~~~~** : * *~~~~**~~~~~~* * ** * *~~~~** : * *~~~~**~~~~~~* * ** * *~~~~**~~~~~~* *~~~~**~~~~~~* * ********* *~~~~********* *~~~~********* *~~~~********* *~~~~********* *~~~~********* ************** ************** ************** ************** ************** **************    4 分钟后    26 分钟后        50 分钟后    平面 1 被水覆盖     平面 3 被水覆盖    平面 2 被水覆盖输入   输入的第一行是一个整数 N,表示平面的数量。从第二行开始的 N 行上分别有两个整数,分别表示平面的宽度和高度。 输出   输出每个平面被水覆盖的时间。
发帖
Java SE
创建于2007-09-28

6.1w+

社区成员

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