循环结构--学习 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++;
                 }
             }

}

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

posted @ 2015-04-30 15:18  BlueWang  阅读(258)  评论(0编辑  收藏  举报