黑马程序员技术交流社区

标题: 键盘输入字母 输出星期的题 [打印本页]

作者: wu971856966    时间: 2016-11-10 16:18
标题: 键盘输入字母 输出星期的题
输入星期英文的首字母 返回星期几   如果首字母一样输入第二个字母   我翘的这个代码好长  有没有短点的
package com.kaoshi.moni;

import java.util.Scanner;

public class Ti1 {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // 键盘录入
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个字母:");
                // 输入字母大小写转换
                String s = sc.nextLine();
                String st = s.toUpperCase();
                // 判断输入长度
                if (st.length() == 1) {
                        // 判断是否符合条件
                        if ("M".equals(st)) {
                                System.out.println("星期一");
                        } else if ("T".equals(st)) {
                                // 由于T有两种结果,所以判断其他条件
                                System.out.println("请输入第二个字母:");
                                String s1 = sc.nextLine();
                                String st1 = s1.toLowerCase();
                                if (st1.length() == 1) {
                                        if ("u".equals(st1)) {
                                                System.out.println("星期二");
                                        } else if ("h".equals(st1)) {
                                                System.out.println("星期四");
                                        } else {
                                                System.out.println("输入有误");
                                        }
                                } else {
                                        System.out.println("输入有误");
                                }

                        } else if ("W".equals(st)) {
                                System.out.println("星期三");
                        } else if ("F".equals(st)) {
                                System.out.println("星期五");
                        } else if ("S".equals(st)) {
                                // 由于S有两种结果,所以判断其他条件
                                System.out.println("请输入第二个字母:");
                                String s2 = sc.nextLine();
                                String st2 = s2.toLowerCase();
                                if (st2.length() == 1) {
                                        if ("a".equals(st2)) {
                                                System.out.println("星期六");
                                        } else if ("u".equals(st2)) {
                                                System.out.println("星期天");
                                        } else {
                                                System.out.println("输入有误");
                                        }
                                } else {
                                        System.out.println("输入有误");
                                }
                        } else {
                                System.out.println("输入有误!");
                        }
                } else {
                        System.out.println("输入有误!");
                }
        }

}



作者: Lamb    时间: 2016-11-10 16:51
class Test1 {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("输入一个代表星期的字母");
                String str = sc.nextLine();
                show(str);
        }
        public static void show(String s) {
                switch(s) {
                case "Mon":
                        System.out.println("星期一");
                        break;
                case "Tues":
                        System.out.println("星期二");
                        break;
                case "Wed":
                        System.out.println("星期三");
                        break;
                case "Thur":
                        System.out.println("星期四");
                        break;
                case "Fri":
                        System.out.println("星期五");
                        break;
                case "Sat":
                        System.out.println("星期六");
                        break;
                case "Sun":
                        System.out.println("星期日");
                        break;
                default:
                        System.out.println("输入的星期不存在.");
                }
        }
}
数组也行,很多。
作者: LHN    时间: 2016-11-10 20:27
我怎么不会   

作者: 15626187339    时间: 2016-11-10 20:44
代码还可以优化简略一下
作者: ylz1997    时间: 2016-11-11 00:26
你只需要在相同字母的情况下加判断就行吧。。。

作者: L10052108    时间: 2016-11-11 02:00
下面是我的代码,我觉得,更简化了一点儿

[AppleScript] 纯文本查看 复制代码
import java.util.Scanner;

public class test {
        public static void main(String[] args) {
                // 创建键盘录入
                System.out.println("输入一个代表星期的字母");
                String s = new Scanner(System.in).nextLine();

                // 创建两个字符数组
                String[] str1 = { "Mon", "Tues", "Wed", "Thur", "Fri", "Sat", "Sun" };
                String[] str2 = { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日" };

                String result = null;

                // 遍历数组,找出对应的
                for (int x = 0; x < str1.length; x++) {
                        if (s.equalsIgnoreCase(str1[x])) {
                                result = str2[x];
                        }
                }

                if (result != null) {
                        System.out.println(result);
                } else {
                        System.out.println("输入的星期不存在");
                }
        }

}

作者: Autumn、Yan    时间: 2016-11-11 02:15
你这代码,看着都累啊。

作者: wu971856966    时间: 2016-11-11 21:54
确实看这类
作者: NewWind    时间: 2016-11-13 11:20
复用性差
作者: duanqichao    时间: 2016-11-14 01:18
我觉得按照题目要求应该是这么写的:

[Java] 纯文本查看 复制代码
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

public class Test {
        static  Scanner sc = new Scanner(System.in) ;
    public static void main(String[] args) {
            String[] arry_week = new String[]{"Mon", "Tues", "Wed", "Thur", "Fri", "Sat", "Sun" };
            String[] arry_day = new String[]{"星期一","星期二","星期三","星期四","星期五","星期六","星期日"} ;
            String temp = sc.nextLine() ;
            //存储符合条件的英文星期
            ArrayList<String> list_day = new ArrayList<>() ;
            //存储符合条件的英文星期的索引
            ArrayList<Integer> index = new ArrayList<>() ;
            //遍历英文星期数组
            for(int i = 0; i<arry_week.length ;i++){
                    //提取每一个元素的第一个字符
                    char a = arry_week.charAt(0) ;
                    //判断是否与输入的字母相符合。不区分大小写
                    if( temp.equalsIgnoreCase(a+"")){
                            //把相等的英文星期和索引放入到相应的list中
                     list_day.add(arry_week);
                     index.add(i);
                    }                   
            }
            
            //如果是这个英文日期的list的size为1,说明这一个天是唯一的,输出结果。对应的数组索引就是index集合中存储的符合条件的索引
            if(list_day.size() == 1){
                    System.out.println("这一天是"+arry_day[index.get(0)] );
            }else{
                    //如果不唯一,继续输入下一个数字
                    System.out.println("输入下一个数字");
                    String temp2 = sc.nextLine();
                    //遍历ArrayList,判断集合中元素的第二个字符是否与输入的字符相符合
                    for(int j = 0 ; j< list_day.size() ; j++){
                        char b =   list_day.get(j).charAt(1) ;
                        //输出符合条件的星期,结束程序
                        if(temp2.equalsIgnoreCase(b+"")){
                                System.out.println("这一天是"+arry_day[index.get(j)]);
                                return ;
                        }else{
                            //否则跳过这一次循环,继续下一次
                            continue ;                            
                        }
                   
                    }
                    //没有符合条件的输入,提示错误,结束程序。
                     System.out.println("输入错误");
            
                   
            }
        }
}

作者: 袁志娜    时间: 2016-11-15 00:26

作者: 1413157322    时间: 2016-11-18 22:49
太繁琐了,可以更简洁点
作者: 1413157322    时间: 2016-11-18 22:53
太繁琐了,可以更简洁点
作者: SuperLan    时间: 2016-11-18 23:23
这代码有点长啊看不下去了加油啊

作者: eason7shin    时间: 2016-11-18 23:55
package com.heima;

import java.util.Scanner;

public class Test1_Week {
        public static void main(String[] args) {
                        Scanner sc = new Scanner(System.in);
                        System.out.println("请输入");
                        String s1 = sc.nextLine();
                       
                       
                        if (s1.equalsIgnoreCase("m")) {
                                System.out.println("星期一");
                        }else if (s1.equalsIgnoreCase("w")) {
                                System.out.println("星期三");
                        } else if (s1.equalsIgnoreCase("f")) {
                                System.out.println("星期五");
                        } else if(s1.equalsIgnoreCase("t")){
                                Scanner sc2 = new Scanner(System.in);
                                System.out.println("请输入第二个字母");
                                String s2 = sc2.nextLine();
                                        if (s2.equalsIgnoreCase("u")) {
                                                System.out.println("星期二");
                                        } else if(s2.equalsIgnoreCase("h")){
                                                System.out.println("星期四");
                                        }
                        }else if(s1.equalsIgnoreCase("s")){
                                Scanner sc2 = new Scanner(System.in);
                                System.out.println("请输入第二个字母");
                                String s2 = sc2.nextLine();
                                if (s2.equalsIgnoreCase("a")) {
                                        System.out.println("星期六");
                                } else if(s2.equalsIgnoreCase("u")){
                                        System.out.println("星期天");
                                }
                        }
        }

}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2