A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

老师在课堂是布置了一道题。题目是:根据所输入的月份,打印对应的季节。(用if语句)
标准答案是

import java.util.*;
class Season {

        public static void main(String[] args){
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入月份");
                int m = sc.nextInt();
                System.out.println("你输入的月份是"+m);

                if (m>=3 && m<=5){
                        System.out.println("春季");
                }else if (m>=6 && m<=8){
                        System.out.println("夏季");
                }else if (m>=9 && m<=11){
                        System.out.println("秋季");
                }else if (m>=1 && m<=12){
                        System.out.println("冬季");
                }else{
               
                        System.out.println("请输入正确的月份");
                }
                       
        }
}

老师说利用今天学的知识点   还有其他的方式 但是看老师打了一半,老师也没思路了。
然后回宿舍顺着他的思路   我自己研究了一晚上。。但一直纠结   
终于  嘎嘎
本来是提问帖的。。但是敲着敲着 思路就通了。

其实也挺简单的 但是 因为是新手 所以有些问题会纠结。。好在 只要用心  一切问题都会迎刃而解的。。

下面是我的代码  我也不知道思路对不对 但是就是按着自己想法敲出来了   
高手勿笑  若是有不足之处 恳请赐教 或是有BUG 也希望大神们告诉我一下。

import java.util.*;
class Noname {
/*

需求:根据所给的月份 打印对应的季节(用If语句,但是不用老师教的常规方式)
          3,4,5是春季
          6,7,8是夏季
          9,10,11是秋季
          12,1,2是冬季。

思路:1.int result= month / 3  结果若为1,那么对应的是3,4,5月份。
                int result= month / 3  结果若为2,那么对应的是6,7,8月份。
                int result= month / 3  结果若为3,那么对应的是9,10,11月份。
                剩下的1,2,12月份 但是要确定安全值范围
步骤:定义int m = sc.nextInt()来接收输入的月份值。(m就是month)
          定义 int r  = m/3 来接收m除以3的值(r就是result)
          用if语句来判断 r的结果 属于哪个季节。
*/
        public static void main(String[] args){
                Scanner sc = new Scanner(System.in);
                        System.out.println("请输入月份");
                        int m = sc.nextInt();//int m 接收输入的mounth月份值
                System.out.println("你输入的月份是"+m);
                        int r= m/3;//用result来接收m/3的值
               
                        if (r < 1 || r >3){//设置安全值范围
                                System.out.println("请输入正确的月份");
                       
                        }else{
                                if (r == 1){//month / 3  结果若为1,那么对应的是3,4,5月份。
                                System.out.println("春季");
                        }else if(r==2){//结果若为2,那么对应的是6,7,8月份
                                System.out.println("夏季");
                        }else if(r==3){//结果若为3,那么对应的是9,10,11月份。
                                System.out.println("秋季");
                        }else {
                                System.out.println("冬季");
                        }






                        }











        }



}




6 个回复

倒序浏览
挺好的,不过既然是用if语句,那么就可以用区间范围来写直接写3-5,6-8,9-11,剩下的就是冬季,当然先判月份是在1-12之间,
也可以用switch语句的case穿透来写.
回复 使用道具 举报
(m>=1 && m<=12)这个条件是不是包含了你前面的条件?
回复 使用道具 举报
2楼+1   感觉用switch来写的话简单点
回复 使用道具 举报
懒癌患者 发表于 2016-3-20 00:18
2楼+1   感觉用switch来写的话简单点

这个就是switch 的题 ,但是老师是要求用if写 而且是和标准答案不同的 老师写了一个 上面那是我自己又想出来的
回复 使用道具 举报
sxuing 发表于 2016-3-20 00:09
挺好的,不过既然是用if语句,那么就可以用区间范围来写直接写3-5,6-8,9-11,剩下的就是冬季,当然先判月份是在 ...

你说的这两种都是 标准答案 老师要求的用if语句但要求另类想法。
回复 使用道具 举报

你说的是 标准答案    老师要求的用if语句但要求另类想法。 还有 我和你一个班的 42期基础
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马