Java星座查询(巧用选择结构和三目运算)

5 篇文章 0 订阅

刚开始学习java,遇到一个比较好的思路,拿出来分享一下:

输入4位数日期,查询该日期对应的星座:

/**
* 白羊:0321~0420          天秤:0924~1023
* 金牛:0421~0521          天蝎:1024~1122
* 双子:0522~0621          射手:1123~1221
* 巨蟹:0622~0722          摩羯:1222~0120
* 狮子:0723~0823          水瓶:0121~0219
* 处女:0824~0923          双鱼:0220~0320
*/

问题:

根据输入的日期 /100 可以得到月份 %100 可以得到日期,

但是有一个问题,星座和月份不是对应的,

而是把每个月分成了两部分,

更为麻烦的是,每个月的分界线并不完全一致

导致处理起来比较麻烦,

技巧:使用三目运算符,就可以很容易的解决这个问题

a>b?c:d;

用if-else结构实现

代码如下:

public static void xingzuo() {
		System.out.println("请输入4位日期(e.g.0925):");
		Scanner input = new Scanner(System.in);
		int monday = input.nextInt();
		int month = monday/100;
		int day = monday%100;
		input.close();
		String xizuo = "";
		if(month == 1) 			
				xizuo = day >= 21 ? "水瓶座" : "摩羯座";
		else if(month == 2)
				xizuo = day >= 20 ? "双鱼座" : "水瓶座";
		else if(month == 3)
				xizuo = day >= 21 ? "白羊座" : "双鱼座";
		else if(month == 4)
				xizuo = day >= 21 ? "金牛座" : "白羊座";
		else if(month == 5)
				xizuo = day >= 22 ? "双子座" : "金牛座";
		else if(month == 6)
				xizuo = day >= 22 ? "巨蟹座" : "双子座";
		else if(month == 7)
				xizuo = day >= 23 ? "狮子座" : "巨蟹座";
		else if(month == 8)
				xizuo = day >= 24 ? "处女座" : "狮子座";
		else if(month == 9)
				xizuo = day >= 24 ? "天秤座" : "处女座";
		else if(month == 10)
				xizuo = day >= 24 ? "天蝎座" : "天秤座";
		else if(month == 11)
				xizuo = day >= 23 ? "射手座" : "天蝎座";
		else if(month == 12)
				xizuo = day >= 22 ? "魔羯座" : "射手座";
		else
				System.out.print("输入错误\n");
				
		System.out.println("您查询日期的星座是 "+xizuo);
		
	}

用switch-case结构实现

代码如下:

public static void xingzuo() {
        System.out.println("请输入4位日期(e.g.0925):");
        Scanner input = new Scanner(System.in);
        int monday = input.nextInt();
        int month = monday/100;
        int day = monday%100;
        input.close();
        String xizuo = "";
        switch(month) {
            case 1:
                xizuo = day >= 21 ? "水瓶座" : "摩羯座";
                break;
            case 2:
                xizuo = day >= 20 ? "双鱼座" : "水瓶座";
                break;
            case 3:
                xizuo = day >= 21 ? "白羊座" : "双鱼座";
                break;
            case 4:
                xizuo = day >= 21 ? "金牛座" : "白羊座";
                break;
            case 5:
                xizuo = day >= 22 ? "双子座" : "金牛座";
                break;
            case 6:
                xizuo = day >= 22 ? "巨蟹座" : "双子座";
                break;
            case 7:
                xizuo = day >= 23 ? "狮子座" : "巨蟹座";
                break;
            case 8:
                xizuo = day >= 24 ? "处女座" : "狮子座";
                break;
            case 9:
                xizuo = day >= 24 ? "天秤座" : "处女座";
                break;
            case 10:
                xizuo = day >= 24 ? "天蝎座" : "天秤座";
                break;
            case 11:
                xizuo = day >= 23 ? "射手座" : "天蝎座";
                break;
            case 12:
                xizuo = day >= 22 ? "魔羯座" : "射手座";
                break;
            default:
                System.out.print("输入错误\n");
                break;
        }
                
        System.out.println("您查询日期的星座是 "+xizuo);
        
    }

 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值