根据用户输入的数字,显示对应星期.

/**
 *    根据用户输入的数字,显示对应星期.
 *    
 *    思路:
 *    1.本体符合查表的思想,可以设定一个方法,让用户传入一个整型数值,然后在表中查对应的星期几就可以了.
 *    
 */
public class WhatDay {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入一个整数值,我来告诉你输入的是星期几?");
        /*这里可以用int num = scan.nextInt() 然后传入方法这个数值,在方法里判断是可以的.
            由于学了String类,所以要用String试一试.用String就涉及到转换类型,把String,转成Integer
          用它的静态方法: Integer.prase(str);
         */
        String userScan = scan.next();    //注意:此时用户是可以随意输入的,不管数字还是中文
        /*加点难度 判断用户输入的是不是整数,用户输入的不是整形数值提示他再次输入.*/
        /*
         思路: 1.判断用户输入就需要,还是String类型,用正则表达式.
               2.String userRegex = "[1-7]";    //由于是判断星期,那么只有1种可能,就是1~7之间的数值

         */
        String userRegex = "([0][1-7])|[1-7]";    //只接收01,02或者1,2格式
        while(true){
            if(userScan.matches(userRegex)){
                whatDay(userScan);
                break;
            }else{
                System.out.println("输入非法字符,请再次输入");
                userScan = scan.next();    
            }
        }
    }
    /**
     * 用户输入数值, 电脑返回星期几的汉子提示
     * @param userScan    用户输入的字符串
     */
    public static void whatDay(String userScan) {
        //首先字符串传进来需要对其进行类型转换
        int num = Integer.parseInt(userScan);
        //建立一个表,下标与输入的int数字对应
        String[] days = {"星期一","星期二","星期三","星期四","星期五","星期六","星期日"};

        //集合也可以实现
        List<String> dayList = new ArrayList<String>();
        dayList.add("星期一");
        dayList.add("星期二");
        dayList.add("星期三");
        dayList.add("星期四");
        dayList.add("星期五");
        dayList.add("星期六");
        dayList.add("星期七");

        //输出结果
        System.out.println("经过计算,您输入的是: "+dayList.get(num-1));
    }
    /*    输出结果:
         请输入一个整数值,我来告诉你输入的是星期几?
         06
         经过计算,您输入的是: 星期六

         请输入一个整数值,我来告诉你输入的是星期几?
         7
         经过计算,您输入的是: 星期日
     */
}
View Code
/**
 *    根据用户输入的数字,显示对应星期.
 *  
 *    2.用Map去做貌似更容易?
 *    key 为1~7  value 为星期1~7
 *    输入key值,返回value
 *    用Map去实现一下
 *    结论:Map可以实现,但是并没有体现出Map的特点.
 *    
 */
/**
 *    根据用户输入的数字,显示对应星期.
 *  
 *    2.用Map去做貌似更容易?
 *    key 为1~7  value 为星期1~7
 *    输入key值,返回value
 *    用Map去实现一下
 *    结论:Map可以实现,但是并没有体现出Map的特点.
 *    
 */
public class WhatDayMap {

    public static void main(String[] args) {
        int num = 7;    //假设用户输入的是数字7.(省略)
        whatDay(num);    //判断星期几的方法
    }

    public static void whatDay(int num) {
//因为是有序的,所以用TreeMap,但是感觉Map用有序的,无法发挥出特点.所以此题还是用数组或者集合比较实用
        Map<Integer,String> dayMap = new TreeMap<Integer,String>();
        dayMap.put(1, "星期一");
        dayMap.put(2, "星期二");
        dayMap.put(3, "星期三");
        dayMap.put(4, "星期四");
        dayMap.put(5, "星期五");
        dayMap.put(6, "星期六");
        dayMap.put(7, "星期日");

        System.out.println(dayMap.get(num));
    }
}
View Code

 

posted @ 2016-04-30 20:28  安仔80  阅读(1186)  评论(0编辑  收藏  举报