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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

郝明明

中级黑马

  • 黑马币:30

  • 帖子:132

  • 精华:0

© 郝明明 中级黑马   /  2015-1-22 23:13  /  809 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.Scanner;

  2. class IfScoreSeason
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 /*
  7.                 if结构的实例
  8.                 1、根据成绩打印不同的成绩等级;
  9.                 2、根据季节打印不同季节
  10.                 总分析: 两者要做一下改善:即数据输入的时候要做一下检查,数据是否合法,可以利用函数改进一下,将判断过程进行封装
  11.                          为了提高程序的交互性可以使用类Scanner来完成数据的输入,实现程序与用户的交互。
  12.                          包导入格式:import java.util.Scanner;在class类之前导入;
  13.                 */
  14.                
  15.                 //对考试成绩的判断输出:100——80:优秀;79——61:一般;0——59:不及格
  16.                
  17.                 //定义一个变量保存从键盘中输入的数据
  18.                 //由于Scanner是一个类,类的使用格式是:类名  变量名 = new 类名();
  19.                
  20.                 System.out.println("请输入一个成绩值:按enter键完成输入"); //给用户一个提示,使得系统的交互性更好
  21.                
  22.                 //完成数据的键盘输入并进行存储
  23.                 Scanner enterIn1 = new Scanner(System.in);  //?? 此处声明了一个Scanner对象,但是有一点不明白:后面括号中的System.in时什么意思??
  24.                 int score=enterIn1.nextInt();  //利用创建的对象去调用Scanner类的方法:nextInt
  25.                
  26.                 String level="";  //定义一个字符串变量,用来存储变化的成绩水平值:优秀、一般、不及格
  27.                
  28.                 //根据分析可知;该判断过程要经过3次判断,更适合使用:if(){  } elseif(){  } .... else {  }的格式
  29.                 if(score>=80&&score<=100)
  30.                 {
  31.                         level="优秀";  //对前面定义的字符串变量进行赋值
  32.                 }
  33.                 else if(score>=60&&score<=79)
  34.                 {
  35.                         level="一般";   //根据不同的情况对level进行不同赋值
  36.                 }
  37.     else if(score>=0&&score<=59)
  38.     {
  39.             level="不及格";
  40.     }
  41.                 else     //注意else后面没有( )
  42.                 {
  43.                         level="您输入的数据不合法,请重新输入";
  44.                 }
  45.                
  46.                 //对判断的结果进行一下输出
  47.                 System.out.println("成绩:"+score+"  "+level);
  48.                
  49.                
  50.                 /*
  51.                 程序的扩展:1、上面关于成绩的判断中虽然有重新输入的提示,但是程序并未重新执行,还需要用户自己去执行,需要改进
  52.                             2、对于数据合法性的判断应该在输入的时候就完成,不应该放在程序主体中
  53.                             3、对于2的延伸,本程序的主要功能就是判断成绩的等级,这是一个功能,如果将非法数据的判断也放在其中,
  54.                                就违背了。。。??
  55.                             4、可以将判断这一个功能封装在一个函数中,这样只完成一个操作,可以提高复用性
  56.                            
  57.                            
  58.                 新需求: 设计一个判断某个月时什么季节的程序,并加上:数据判断、函数封装            
  59.                 */
  60.                
  61.                
  62.                 //使用一个while语句和if语句的嵌套实现对输入数据循环判定
  63.                 while(true)
  64.                 {
  65.                         System.out.println("请输入月份数据:");  //增加程序的交互性
  66.                
  67.                   //创建一个Scanner的对象,并定义一个int类型进行存储
  68.                   Scanner enterIn2=new Scanner(System.in);
  69.                   int temp1=enterIn2.nextInt();
  70.                   
  71.                   /*
  72.                      参考:
  73.                       if(m<1 || m>12)
  74.                         {
  75.                                 System.out.println("你输入的数据错误,请重新输入");
  76.                                 System.out.println();
  77.                                 continue;       
  78.                         }
  79.                         else
  80.                         {
  81.                                 //函数调用
  82.                                System.out.println("月份:"+m+"月是"+panDuan(m));
  83.                                break;  //此处控制while循环的结束,如果注释掉,那么循环会一直进行下去!
  84.                         }
  85.                   */
  86.                
  87.                        
  88.                         if(temp1>=1&temp1<=12)
  89.                         {
  90.                                 //定义一个输出语句将结果输出
  91.                     System.out.println("月份:"+temp1+"  "+panDuan(temp1));
  92.                     break;  //当输入的数据合法,完成判断并且对结果进行输出后,跳出本循环体,继续执行循环体下面的程序
  93.                         }
  94.                         else
  95.                         {
  96.                                 System.out.println("您输入的数据有误,请输入1——12之间的整数");
  97.                                 System.out.println();
  98.                                 continue;  //当出现非法数据的时候,结束本次循环,但是不跳出循环体,继续执行下一次循环
  99.                         }
  100.                        
  101.                        
  102.                 }
  103.                
  104.         }
  105.           
  106.            /*
  107.            根据新需求构造一个函数只用于判断,月份的归属
  108.            思路:1、函数返回值类型的分析:该判断要对某个月属于哪个季节进行返回,类型定义为String
  109.                  2、函数的参数列表:程序运行过程中只出现一种数据的传递,即将键盘输入的月份数据传递给自定义的函数
  110.            */
  111.            public static String panDuan(int n)
  112.            {
  113.                      String result="";  //用于存储函数的判断的结果,并利用return语句将它返回给调用函数
  114.                      /*
  115.                      if(n==3||n==4||n==5)
  116.                      {
  117.                  result="春季";
  118.                      }
  119.                      else if(n==6||n==7||n==8)
  120.                      {
  121.                              result="夏季";
  122.                      }
  123.                      else if(n==9||n==10||n==11)
  124.                      {
  125.                              result="秋季";
  126.                      }
  127.                      else
  128.                      {
  129.                              result="冬季";   
  130.                      }
  131.                      */
  132.                      if(n>=3&n<=5)
  133.                      {
  134.                  result="春季";
  135.                      }
  136.                      else if(n>=6&n<=8)
  137.                      {
  138.                              result="夏季";
  139.                      }
  140.                      else if(n>=9&n<=11)
  141.                      {
  142.                              result="秋季";
  143.                      }
  144.                      else
  145.                      {
  146.                              result="冬季";    //利用方法的封装可以将问题进行简化,在此例题中由于冬季是12、1、2,在书写条件是必须写成n==12||n==1||n==2
  147.                      }                   //其他月份由于是连续的数值所以可以使用n>=3&n<=5,这种形式,由于前面已经将数据进行了检查,传递过来的都是
  148.                      return (result);    //合法的数据,因此可以仅对春夏秋三个季节的数据进行判断,冬季使用else即可,省去了书写条件的麻烦
  149.                      
  150.            }
  151.           
  152.           
  153.        
  154.        
  155.        
  156.        
  157.        
  158. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马