java经典问题——求正整数的位数
来源:互联网 发布:千方百剂医药软件安装 编辑:程序博客网 时间:2024/06/06 20:19
题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
public class Number {int number;State current;int count;int[] charInNumber;public Number() {current = new OneState();}public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}public State getCurrent() {return current;}public void setCurrent(State current) {this.current = current;}public void getCount(){current.getCount(this);}//求每位数字public void getChars(){charInNumber = new int[count];int temp = number;if(count >= 2){for(int i = 0; i < count; i ++){charInNumber[i] = temp / (getValue(count - 1 - i));temp = temp % (getValue(count - 1 - i));if(temp < 10){charInNumber[i + 1] = temp;break;}}}else{charInNumber[0] = temp;}}//求十的阶乘,感觉好蠢的方法public int getValue(int count){int value = 1;for(int i = 0; i < count; i ++){value = value * 10;}return value;}}
public abstract class State {public abstract void getCount(Number number);}
public class OneState extends State {@Overridepublic void getCount(Number number) {if(number.getNumber() < 10 ){number.count = 1;number.getChars();}else{number.setCurrent(new TwoState());number.getCount();}}}
public class TwoState extends State {@Overridepublic void getCount(Number number) {if(number.getNumber() < 100){number.count = 2;number.getChars();}else{number.setCurrent(new ThreeState());number.getCount();}}}
public class ThreeState extends State {@Overridepublic void getCount(Number number) {if(number.getNumber() < 1000){number.count = 3;number.getChars();}else{number.setCurrent(new FourState());number.getCount();}}}
public class FourState extends State {@Overridepublic void getCount(Number number) {if(number.getNumber() < 10000){number.count = 4;number.getChars();}else{number.setCurrent(new FiveState());number.getCount();}}}
public class FiveState extends State {@Overridepublic void getCount(Number number) {if(number.getNumber() < 100000){number.count = 5;number.getChars();}}}
public class Practise24 {private void getResult(){System.out.println("请输入一个不多于5位的正整数");Scanner scan = new Scanner(System.in);int input = scan.nextInt();Number number = new Number();number.setNumber(input);number.getCount();System.out.println(number.getNumber() + " 是 " + number.count +"位数");System.out.println();for(int i = number.count - 1; i >= 0; i --){System.out.print(" "+number.charInNumber[i]);}}public static void main(String[] args) {(new Practise24()).getResult();}}
- java经典问题——求正整数的位数
- Java编程:用两种方法求输入正整数的位数。
- java经典算法_023给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
- java 输入一个正整数求各个位数这和
- java经典问题——求年纪
- Tyvj 水题begin 求一个正整数位数的常用方法
- 求正整数的位数,依次输出,逆序打印
- 1006求正整数的位数及各位数字和
- 一个正整数的位数
- java求整数的位数
- java中如何获取一个正整数的位数?
- 求一组正整数的最小公倍数问题
- java经典问题——求前20项之和
- java经典问题——递归求阶乘
- java经典问题——求前20项阶乘的和
- SDUT 3503 有两个正整数,求N!的K进制的位数
- NYOJ 90 —— 求正整数n划分为若干个正整数的划分个数
- 【程序24】TestNumber.java 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
- android 用gson解析json的时候报空指针
- 站长的悲剧
- 新征程
- java经典问题——求年纪
- centos_5.4 安装中文支持
- java经典问题——求正整数的位数
- Linux下使用daemon函数编写后台程序
- Oracle数据库权限管理学习笔记
- python使用opengl绘制竹叶的十字型
- Session会在浏览器关闭后消失吗???
- 学习方法
- POJ 1260 Pearls
- 2012.12.4(mysql事务处理)
- Ant__helloword