我的计算机老师给了我一个问题,找出两位数和三位数字的数量并终止程序(当用户输入 0 时)并打印总共两位数,三位数字和其他数字。
这是终端窗口中的示例输出:
Enter your number: 23
Enter your number: 1
Enter your number: 412
Enter your number: -123
Enter your number: 32332
Enter your number: 12
Enter your number: -1
Enter your number: 0
Two digit numbers : 2
Three digit numbers : 2
Other digit numbers : 3
这是我的程序:
import java.io.*;
public class two_three_digits
{
static DataInputStream dis = new DataInputStream(System.in);
static void main()throws IOException
{
int two = 0 , three = 0 , oth = 0;
while(true)
{
System.out.print("Enter your number: ");
int n = Integer.parseInt(dis.readLine());
n = (int)Math.abs(n);
int d = 0,cn = n;
if(n == 0)break;
else if(n > 9 && n < 100)two++;
else if(n > 99 && n <1000)three++;
else oth++;
}
System.out.println("Two digit numbers : "+two);
System.out.println("Three digit numbers : "+three);
System.out.println("Other digit numbers : "+oth);
}
}
我想知道是否有更短的方法来完成同样的任务?比如使用 arrays
, string
或者 Bitswise operator
等等。
另外,我更希望您能告诉我怎么做的方法而不是简单的程序,因为我是一名正在学习的学生,希望自己解决。
编辑:抱歉,因为我忘记了一个术语——更快这个词实际上是指速度(或多或少,程序的大小)
最佳答案
计算十进制数的位数的一种简单方法是使用 log base 10 .这将为您提供一个十进制值,表示为了获得输入值而将 10 提高到多少次幂。
例如,log10(10)
会给出 1,log10(100)
会给出 2,中间的值会给出 1 到 2 之间的值。你可以取这个结果的 floor
,然后加 1 得到给定数字的位数。
关于java - 找出数字中位数并打印出来的更快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24701895/