3程序控制结构

1 顺序结构

2 分组结构

2.1 if语句

2.1.1语法形式1

if(布尔表达式) {
//条件满足时执行代码
}

 public static void main (String[] args) {
            int num = 10;
            if (num % 2 == 0) {
                System.out.println("num 是偶数");
            }
            else {
                System.out.println("num是奇数");
            }
        }

2.1.2语法形式2

if(布尔表达式) {
//条件满足时执行代码
}else{
//条件满足时执行代码
}

  public static void main (String[] args) {
            int num = 10;
            if (num > 0) {
                System.out.println("num 是正数");
            }else if (num < 0){
                System.out.println("num 是负数");
            }else {
                System.out.println("num是0");
            }
        }

2.1.3语法形式3

if(布尔表达式) {
//条件满足时执行代码
}else if(布尔表达式){
//条件满足时执行代码
}else{
//条件满足时执行代码
}
①错误写法if(5<=a<=10)
正确写法if(a<=a&&a<=10)

 /*
        判断是不是闰年
        100的倍数+400的倍数
        不是100的倍数 +4的倍数
        */
        public static void main (String[] args) {
            int year = 2000;
            if (year % 100 == 0) {
                if (year % 400 == 0) {
                    System.out.println("是闰年");
                }else {
                    System.out.println("不是闰年");
                }
            }else {
                if (year % 4 == 0) {
                    System.out.println("是闰年");
                }else {
                    System.out.println("不是闰年");
                }
            }
        }

2.2 switch语句

switch(参数) {
case 内容1 : {
内容满足时执行语句;
break;
}
case 内容1 : {
内容满足时执行语句;
break;}

default : {
内容都不满足时执行语句;
break;
}
}

public static void main (String[] args) {
            int day = 1;
            switch(day) {
                case 1:{
                    System.out.println("星期一");
                    break;
                }
                case 2:{
                    System.out.println("星期二");
                    break;
                }
                case 3:{
                    System.out.println("星期三");
                    break;
                }
                case 4:{
                    System.out.println("星期四");
                    break;
                }
                case 5:{
                    System.out.println("星期五");
                    break;
                }
                case 6:{
                    System.out.println("星期六");
                    break;
                }
                default:{
                    System.out.println("星期日");
                    break;
                }
            }
        }

①switch参数的类型:整数/枚举/字符/字符串;不能做switch参数的类型:long,float,double,boolean
②break尽量不要省略

3循环结构

3.1 while 循环

while(条件) {
循环语句;}
while条件里的执行结果只能式布尔类型

 //1!+2!+3!+4!+5!
        public static void main (String[] args) {
            int num = 1;
            int sum = 0;
            while (num <= 5) {
                int factorResult = 1;
                int tmp = 1;
                while (tmp <= num) {
                    factorResult *= tmp;//阶乘
                    tmp ++;
                }
                sum += factorResult;//求和
                num ++;
            }
            System.out.println("sum = " + sum);
        }

3.2 break

 //找到 100 - 200 中第一个 3 的倍数
        public static void main (String[] args) {
            int num = 100;
            while (num <= 200) {
                if (num % 3 == 0) {
                    System.out.println("找到了3的倍数,为:" + num);
                    break;
                }
                num++;
            }
        }

break让循环提前结束.

3.3 continue

 //找到 100 - 200 中第一个 3 的倍数
        public static void main (String[] args) {
            int num = 100;
            while (num <= 200) {
                if (num % 3 != 0) {
                    num ++;
                    continue;
                }
                System.out.println("找到了3的倍数,为:" + num);
                num++;
            }
        }

break可以用到switch和循环中,continue只能用到循环中

3.4for循环

for(表达式1;表达式2;表达式3) {
循环体;
}
①表达式1:用于初始化循环变量
表达式2:循环条件
表达式3:更新循环变量
②执行顺序:第一趟:(a)表达式:只执行一次.初始化
(b)判断表达式2是否为真
©循环体
(d)表达式3
第二趟:(b)判断表达式2是否为真
©循环体
(d)表达式3在这里插入图片描述
1!+2!+3!+4!+5!

//①先用for循环求每个阶乘
        public static void main(String[] args){
            int i;//阶乘的个数
            int ret = 1;//存放阶乘
            for(i=1;i<=5;i++){
                ret *=i;
                System.out.println(ret);
            }
        }
 //②外面再加一层for循环求阶乘的和
        public static void main(String[] args){
            int j;//求和的个数
            int num =0;//存放求和结果
            for(j=1;j<=5;j++){
                int i;//阶乘的个数
                int ret = 1;//存放阶乘
                for(i=1;i<=j;i++){  //将5改成j,求一个阶乘加一次
                    ret *=i;
                }
                num+=ret;}
            System.out.println(num);

        }
 // 1!+2!+3!+4!+5!
        public static void main16(String[] args){
            int n =1;
            int sum = 0;
            while (n <= 5) {
                int i =1;
                int num =1;
                while (i <= n) {
                    num *= i;
                    i++;
                }
                sum += num;
                n ++;
            }
            System.out.println(sum);
        }
    // 1!+2!+3!+4!+5!
        public static void main15 (String[] args) {
            int a = 1;
            int result = 0;
            while (a <= 5) {
                int i = 1;
                int ret = 1;
                while(i <= a) {
                    ret *= i;
                    i++;
                }
                result +=ret;
                a ++;
            }
            System.out.println("result = " + result);
        }

3.5 do while

do{
循环语句
}(while循环条件)
先执行一次循环语句再执行循环条件

练习题

①猜字游戏

 //猜一个随机数
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);//从键盘输入
            Random random = new Random();
            int randNum = random.nextInt(100);//输入1-100之间的随机数,左闭右开
            //  System.out.println(randNum);
            scan.close();//关闭调用
            while (true) {
                System.out.println("请输入你要猜的数字:");
                int num = scan.nextInt();
                if (num < randNum) {
                    System.out.println("你输入的数字小了");
                } else if (num == randNum) {
                    System.out.println("你输入的数字对了");
                    break;
                } else {
                    System.out.println("你输入的数字大了");
                }
            }
        }

②判断一个数是不是素数

//判断一个数是不是素数
        public static void main(String[] args){
            Scanner scan = new Scanner(System.in);
            int n = scan.nextInt();
            for(int i = 2; i < n ;i++){
                if(n % i == 0){
                    System.out.println(n+ "不是素数!");
                    break;
                }
            }
        }
  //判断一个数是不是素数2
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            int n = scan.nextInt();
            for (int i = 2; i <= (int) Math.sqrt(n); i++) {
                if (n % i == 0) {
                    System.out.println(n + "不是素数");
                }
            }
        }
  //找到1-100之间的素数
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            int n = scan.nextInt();
            //输入n然后判断n是不是素数
            for (int i = 1; i <= n; i++) {
                int j = 2;
                for (; j <= (int) Math.sqrt(i); j++) {
                    if (i % j == 0) {
                        //System.out.println(n + "不是素数");
                        break;
                    }
                }
                if (j > (int) Math.sqrt(i)) {
                    System.out.println(i + "是素数");
                }
            }
        }        

③输出乘法口诀

//输出乘法口诀表
    public static void main(String[] args) {
           for (int i = 1; i <= 9; i++) {
                for (int j = 1; j <= i; j++) {
                    //int x = i * j;
                    System.out.println(i + "*" + j + "=" + i * j + " ");
                }
                System.out.println();
            }
        }

④求两个数的最大公约数
a=24,b=18
第一步c=a(24)%b(18)=6
第二步a=b(第一步除数18) b=c(第一步余数6) 重复c=a%b
重复第二步直至余数等于0的余数就是a和b的最大公约数

//输出两个数的最大公约数
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int a = scan.nextInt();
        int b = scan.nextInt();
        int c = 0;
        while(a%b != 0){
            c = a%b;
            a = b;
            b = c;
        }
        System.out.println(c);
    }

输入数字的时候注意要敲回车键两行输入
⑤计算1/1+1/2-1/3+1/4…1/100

 //1/1+1/2-1/3+1/4....1/100
    public static void main28(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        double sum = 0;
        int flg = -1;
        for (int i = 1 ;i <= n; i++){
            sum = sum  + 1.0/i * flg;
            flg = -flg;
        }
        System.out.println(sum);
    }

⑥1-100之间会含有多少个9

//1-100之间会含有多少个9
    //如果想找一个十进制数每一位是几,只需/10或者%10
    //如果想找一个二进制数每一位是几,只需/2或者%2
    public static void main29(String[] args) {
        int count = 0;
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        for (int i = 1;i <=n; i++){
            if (i %10 ==9){//个位数是9
                count ++;
            }else if ( i / 10 == 9){//十位数是9
                count ++;
            }
        }
        System.out.println(count);
    }
 //整数二进制1的个数①
    public static void main1(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int count = 0;
        for (int i = 0; i < 32; i++) {
         if(((n>>i)&1)==1){
             count++;
         }
        }
        System.out.println(count);
    }
//整数二进制1的个数②
    public static void main2(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int count = 0;
        while(n!= 0){
            n= n&(n-1);
            count++;
        }
        System.out.println(count);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值