public void testIfElse(int number){
        if(number>=0 && number <= 9){
            do0_9();
        }else if(number>=10 && number <= 99){
            do10_99();
        }else if(number>=100 && number <= 999){
            do100_999();
        }else{
            System.out.println("请正确输入数据!");
        }
    }请用switch/case重写此方法。

解决方案 »

  1.   

    这个用switch会搞死人的
    case 0:
    case 1:
    ...
    case999 :
    你说死不死?
    LZ的想法有点怪
      

  2.   

    public void testIfElse(int number){ 
            //缺点,不能对0做处理
            int i = (int)Math.log10(number);
            switch(i) {
                case 0:
                    do0_9();
                    break;
                case 1:
                    do10_99();
                    break;
                case 2:
                    do100_999();
                    break;
                default:
                    System.out.println("请正确输入数据!"); 
            }
        }
      

  3.   

    就你这题目来看(数据太有规律了)
    如果number经过处理是可以的
    如果number不允许处理的话(我也不知道怎么弄)
    public void testSwitchCase(int number) {
    int num = countTimes(number , 10);
    switch(num) {
    case 0:
    System.out.println("0 - 9"); 
    break;
    case 1:
    System.out.println("10 - 99");
    break;
    case 2:
    System.out.println("100 - 999");
    break;
    default:
    System.out.println("请正确输入数据!");
    break;
    }
    }

    public int countTimes(int number , int radix) {
    int count = -1;
    while(number != 0 && number >= 0) {
    number = number/radix;
    count++;
    }
    return count;
    }
      

  4.   

    int i=10;
    String s=Integer.toString(i);
    switch(s.length())//根据数字的长度计算,呵呵
    {
    case 1:System.out.println("0-9");break;
    case 2:System.out.println("10-99");break;
    case 3:System.out.println("100-999");break;
    default:
    System.out.println("default");
    }
      

  5.   

    负数你可以先进行判断的:
    public void TestSwitch(int number)
    {
    if(number<0){
    System.out.println("小于0");
    return;
    }
    String s=Integer.toString(number);
    switch(s.length())
    {
    case 1:System.out.println("0-9");break;
    case 2:System.out.println("10-99");break;
    case 3:System.out.println("100-999");break;
    default:
    System.out.println("default");
    }
    }
      

  6.   

    负数处理不了很简单啊,加个判断不就得了。public void testIfElse(int number){ 
            //缺点,不能对0做处理 
            int i = (int)Math.log10(number); 
            if(number<0)
                i = -1;
            switch(i) { 
                case 0: 
                    do0_9(); 
                    break; 
                case 1: 
                    do10_99(); 
                    break; 
                case 2: 
                    do100_999(); 
                    break; 
                default: 
                    System.out.println("请正确输入数据!"); 
            } 
        }
      

  7.   

    public void testSwitch(int number){
            int flag = number>-1?(number>9?(number>99?(number>999?4:3):2):1):-1;
            switch (flag){
                case 1:
                    do0_9();break;
                case 2:
                    do10_99();break;
                case 3:
                    do100_999();break;
                default:
                    System.out.println("请正确输入数据!"); 
            }
        }
      

  8.   

    楼主,我的能处理负数的啊!!
    你输入负数的时候
    根本没能进入我的while循环
    也就是count是-1,按你题目的意思我将它归于default那一类了
      

  9.   

    int flag = number>-1?(number>9?(number>99?(number>999?4:3):2):1):-1; 
    分解出来N多个if else
    换汤不换药