• 循环结构学习 java 归纳(3)


    最近学了java的循环结构,循环结构循环结构既要有循环条件,也要有循环操作,以及改变的循环变量的值。比如开车的时候轮子的转动。开车是循环条件,轮子转动时循环操作。
    java有三大循环结构,while,do-while,for。他们的区别如下:


    whlie和do-while的结构:


    for的结构:


    for最后面的操作表达式++是一元运算符。。
    i++就是先使用然后对自身加1,比如int i=1; int b=i++;得出的结果是 b=1 i=2
    ++i则相反,先自身加1,再使用,比如int i=1; int b=++i; 结果b=2 r=2
    另外顺便再说下二元运算符,就是常说的加减乘除。三元运算符,int a=100,int c=a>100?200:500;,结果就是c=500.
    再然后是嵌套循环,for,while,do-while可以互相嵌套。假设外循环的循环次数是m次,内循环的循环次数是n次,那么内层循环的循环次数需要 m * n次。
    有个乘法表的经典例子说明。

    public class chengfabiao{
        public static void main(String[] args){
              for(int i=1;i<=9;i++){
                  for(int j=1;j<=i;j++){
                      System.out.print(i+"*"+j+"="+i*j+"\t");
                  }
                  System.out.print("\n");
              }
        }
    }
    

    上面是两个for循环嵌套,外循环执行一次,内循环就要执行i次。随着i渐渐变大,内循环执行的次数也在渐渐变多。好神奇有木有。。。
    在执行循环的时候,有时候会要求终止执行。这里就有三个流程控制语句,break和continue以及return。

    最后举个日历的例子。
    我想查从1900年1月1日之后任意一个月的日历。先输入年份,再输入月份,即可列出这一年这一月的日历表。
    其实要一步达到上面的功能对现在的我来说很有难度。。。所以为了再具体化一点,我先实现2015年9月的日历吧。
    首先要知道一些知识。闰年有366天,平常是365天。一年中的大月是31天,小月是30天,二月是29天或28天。从1900年1月1日到2015年9月总共的天数除以7即可推算出9月的开始是星期几。

    //算出总共有多少天
    for(int year=1900;year<2015;i++){
                     if(year%4==0&&year%100!=0||year%400==0){//算闰年
                         sum=sum+366;
                     }else{
                         sum+=365;//算平常的年
                     }
                 }
    //上面的已经算到了2014年,现在开始算2015年1月1日到2015年9月总共有多少天
    for(int month=1;i<9;i++){
                     if(month==2){
                         if(2015%4==0&&2015%100!=0||2015%400==0){//如果是闰年2月是29天,平年2月是28天
                             sum+=29;
                         }else{
                             sum+=28;
                         }
                     }
                     else{
                         if(month==4||month==6||month==9||month==11){//4,6,9,11月是小月,其他都是大月
                             sum+=30;
                         }else{
                             sum+=31;
                         }
                     }
                 }
    //上面已经算到2015年8月的天数。要从9月1号开始布局,so
                 sum+=1;
    //天数到这里已经算出来了,现在用天数除以7,即可知道星期几。
                     int wekday=sum%7;
    //现在是日历的第一排有几个空格。
                    System.out.println("日\t一\t二\t三\t四\t五\t六");
                    for(int i=1;i<=wekday;i++){
                     System.out.print("\t");
    
                 }
    //列出2015年9月的日历表
     for(int i=1;i<=j;i++){
                     if(sum%7==6){//如果是到了第六个空格就换行,其他都是空格
                     System.out.print(i+"\n");
                     }else{
                     System.out.print(i+"\t");
                     }
                     sum++;//增加天数
                     }
    

    既然列出了一个月日历表,那么想查任意月的日历表只需要将具体的年份改成自己输入的年份,最后代码如下:

    public class cal {
             public static void main(String[] args){
                 Scanner in=new Scanner(System.in);
                 int sum=0,j;
                 System.out.println("请输入年份:");
                 int year=in.nextInt();
                 System.out.println("请输入月份:");
                 int month=in.nextInt();
                 for(int i=1900;i<year;i++){
                     if(i%4==0&&i%100!=0||i%400==0){
                         sum=sum+366;
                     }else{
                         sum+=365;
                     }
                 }
                 for(int i=1;i<month;i++){
                     if(i==2){
                         if(year%4==0&&year%100!=0||year%400==0){
                             sum+=29;
                         }else{
                             sum+=28;
                         }
                     }
                     else{
                         if(i==4||i==6||i==9||i==11){
                             sum+=30;
                         }else{
                             sum+=31;
                         }
                     }
                 }
                 sum+=1;
                 int wekday=sum%7;
                 System.out.println("日\t一\t二\t三\t四\t五\t六");
                 for(int i=1;i<=wekday;i++){
                     System.out.print("\t");
    
                 }
    
                 if(month==2){
                     if(year%4==0&&year%100!=0||year%400==0){
                           j=29;
                     }else{
                         j=28;
                     }
    
                 }else{
                     if(month==4||month==6||month==9||month==11){
                         j=30;
                     }else{
                         j=31;
                     }
    
                 }
                 for(int i=1;i<=j;i++){
                     if(sum%7==6){
                     System.out.print(i+"\n");
                     }else{
                     System.out.print(i+"\t");
                     }
                     sum++;
                     }
                 }
    
    }
    

    感觉特神奇。。。学到这里总算找到不少乐趣,希望一直学下去。

  • 相关阅读:
    区域赛
    kd树的创建和求最近邻
    Fliptile POJ
    第六周作业
    第四次作业
    第三次作业
    第二周作业
    第一次作业
    董雅洁 我的第0次作业
    21 UI_布局 之 线性布局 xml配置方式
  • 原文地址:https://www.cnblogs.com/BlueBlog/p/4469004.html
Copyright © 2020-2023  润新知