Java学习笔记——程序逻辑控制

9.27-9.29
1、分支结构:if,if…else,switch

//三个分支结构的综合运用
package classe;
import java.util.*;
public class hello {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int age = s.nextInt();//输入
 //输入年份判断闰年,并且算出输入年份的输入月份的1月距离该年份的1月1号有多少天
       if((year % 4 == 0 && year % 100 != 0)||year %400==0)
       //这是判断输入的年份是否是闰年
       { 
          System.out.println("闰年有366天");
       }
       else 
       { 
         System.out.println("平年有365天"); 
       }
       int mouth = s.nextInt();
       int a = 0;
       switch (mouth)
       { case 12: {a+=31;}
         case 11:{a+=30;} 
         case 10:{a+=31;} 
         case 9:{a+=30;} 
         case 8:{a+=31;} 
         case 7:{a+=31;}
         case 6:{a+=30;} 
         case 5:{a+=31;} 
         case 4:{a+=30;} 
         case 3:{a+=31;} 
         case 1:{a+=31;}
         case 2:
         { 
            if((year % 4 == 0 && year % 100 != 0)||year %400==0)
             {a+=29;}                    
             else {a+=28;} 
         }
    }
  }
}

2、循环结构:while,do…while,for

//累加1~100的数,用三种循环体
int x = 0;
int sum=0;
while(x<=100)
//如果这里是x<100,那么x=100的时候该判断语句不成立,
//所以不会继续下面的循环语句
{
    sum+=x;
    x++;
}
System.out.println(sum);
int xa=0;
int suma=0;
do {
    suma+=xa;
    xa++;
}while(xa<=100);
System.out.println(suma);
int xb=0;
int sumb=0;
for(xb=0;xb<=100;xb++)
{
    sumb+=xb;
}
System.out.println(suma);

输出结果为:
5050
5050
5050

注意:while和do…while的区别
while:只有条件符合while括号中的内容,才能进行while中的循环语句
do…while:无论是否符合条件都会进行一次花括号中的循环语句,如果条件不符合,循环结束;如果条件符合,循环继续

3、循环控制语句:continue(退出本次循环),break(退出整个循环)

int x=0;
for(x=0;x<=5;x++)
{
    if(x==3)  {continue;}//跳过x=3时的循环,后续的循环不会受到影响
    if(x==5)  {System.out.print(x);System.out.println();}
    else {System.out.print(x+"、");}
}
int xa=0;
for(xa=0;xa<=5;xa++)
{
    if(xa==3)  {
        break;
    }//跳过x=3时的循环,后续的循环不再继续,break相当于退出最外层的那个循环
     System.out.print(xa+"、");
}

输出结果为:
01245
012

4、循环嵌套(重点掌握)

package classe;
public class hello {
    public static void main(String[] args) {
//1、打印九九乘法表和各种三角形
        int i = 1;//表示行
        int j = 1;//表示列
        for (i = 1; i <= 9; i++) {
            for (j = 1; j <= i; j++) {
                System.out.print(j + "*" + i + "=" + i * j + "\t");
            }
            System.out.println();//表示每行打完就换行
        }
//2、输出左三角形
        for (int xc = 1; xc <= 5; xc++)//表示行
        {
            for (int y = 1; y <= xc; y++)//表示每一行应该有的星星个数
            {
                System.out.print("*");
            }
            System.out.println();
        }
//3、输出正三角形
        int c, d, k;
        for (c = 1; c <= 4; c++) {
            for (k = 1; k <= 4 - c; k++) {//每行的空格数量逐步减少
                System.out.print(" ");
            }
            for (d = 1; d <= 2 * c - 1; d++) {//每行输出的*增多
                System.out.print("*");
            }
            System.out.println();
        }
//4、输出右三角形
        for (int cw = 1; cw <= 5; cw++) {
            for (int dw = 1; dw <= 5 - c; dw++)//每行的空格数量逐步减少
            {
                System.out.print(" ");
            }
            for (int dw = 1; dw <= cw; dw++) {
                System.out.print("*");
            }
            System.out.println();
//5、左中空三角形:该三角形有一定规律,行数*2-1=该行的星星数
        int w, e;//w表示行数,e表示每行的星星数
        for (w = 1; w < 5; w++) {
            for (e = 1; e <= 2 * w - 1; e++)
             {
                if (e == 1 || e == 2 * w - 1 || w == 4) {
                    System.out.print("*");
                } else System.out.print(" ");
            }
            System.out.println();
        }
//6、菱形
        int sum, num, dum;//正三角形的输出,sum表示行,num表示每行的空格的循环
        for (sum = 1; sum <= 4; sum++) {
            //两个循环体不是嵌套的关系,是并列的关系
            for (dum = 1; dum <= 4 - sum; dum++) {
                System.out.print(" ");
            }
            //正三角形的循环
            for (num = 1; num <= 2 * sum - 1; num++) {
                System.out.print("*");
            }
            System.out.println()/;
        }
        //倒三角形的输出,当行数达到第三行的时候,上一个循环体会继续往下循环一次,所以会有第四行的情况,请不要在下面这个for循环中
        //把sum=4,因为这样for循环会重复循环一次,会出现第四行的长度出现两次
        //sum在第四行后就开始输出倒正三角形(相当于输出正着的空左三角形)
        for (sum = 3; sum >= 1; sum--) {
            for (dum = 1; dum <= 4 - sum; dum++) {
                System.out.print(" ");
            }
            for (num = 1; num <= 2 * sum - 1; num++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
//中空菱形
 int sum, num, dum;//正三角形的输出,sum表示行,num表示每行的空格的循环
        for (sum = 1; sum <= 4; sum++) {
            //两个循环体不是嵌套的关系,是并列的关系
            for (dum = 1; dum <= 4 - sum; dum++) {
                System.out.print(" ");
            }
            //正三角形的循环
            for (num = 1; num <= 2 * sum - 1; num++) {
                if (num == 1 || num == 2 * sum - 1 ) {
                    System.out.print("*");
                } else System.out.print(" ");
            }
            System.out.println();
        }
//倒三角形的输出,当行数达到第三行的时候,上一个循环体会继续往下循环一次,所以会有第四行的情况,请不要在下面这个for循环中
//把sum=4,因为这样for循环会重复循环一次,会出现第四行的长度出现两次
//sum在第四行后就开始输出倒正三角形(相当于输出正着的空左/三角形)
        for (sum = 3; sum >= 1; sum--) {
            for (dum = 1; dum <= 4 - sum; dum++) {
                System.out.print(" ");
            }
            for (num = 1; num <= 2 * sum - 1; num++) {
  //判断num是否等于第一个和最后一个,如果等于,那么就输出星星,不是输出空格
                if (num == 1 || num == 2 * sum - 1 ) {
                    System.out.print("*");
                } else System.out.print(" ");
            }
            System.out.println();
        }

    }
}

以上所有的代码输出结果如下(为了让大家看的更加清楚每个题目后我加了一个换行语句)

1*1=1 
1*2=2 2*2=4 
1*3=3 2*3=6 3*3=9 
1*4=4 2*4=8 3*4=12 4*4=16 
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

*
**
***
****
*****

   *
  ***
 *****
*******

    *
   **
  ***
 ****
*****

*
* *
*   *
*******

   *
  ***
 *****
*******
 *****
  ***
   *

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值