控制语句分类

控制语句分类:
1、选择语句:也叫分支语句

if语句
if(boolean类型){ //分支1
  java语句;
}else if(布尔表达式){
  java语句;

}else{//分支2
  java语句;
}

4种语法机制:
1、if(布尔表达式){}
2、if(){}else{}
3、if(){}else if(){}else if(){}
4、if(){}else if(){}else if(){}else{}

if嵌套:
if(){
if(){}
}else{
}
判断性别

public class demo02 {
    public static void main(String[] args) {
        boolean sex =true;
        //三目运算
        String a=sex?"男":"女";
        System.out.println(a);
        //if语句
        if (sex){
            System.out.println("男");
        }else {
            System.out.println("女");
        }
    }
}

业务需求:
1.从键盘上接收一个人的年龄
2.根据要求为[0-150],其他值表示非法,需要提示非法信息
3.根据人的年龄来动态的判断这个属于生命的哪个阶段?
[0-5]婴幼儿
[6-10]少儿
[11-18]少年
[19-35]青年
[36-55]中年
[56-100]老年
4.请用if语句完成以上的业务逻辑
方法1

public class demo02 {
    public static void main(String[] args) {
    Scanner scanner=new Scanner(System.in);
        System.out.println("输入年龄:");
        int age = scanner.nextInt();
        if (age<0||age>150){
            System.out.println("您输入的年龄不合法");
                    return;
        }else {if (age<=5){
            System.out.println("婴儿");
        }else if (age<=10){
            System.out.println("少儿");
        }else if (age<=18){
            System.out.println("青年");
        }else if (age<35){
            System.out.println("中年");
        }else {
            System.out.println("老年");
        }}
    }
}

方法2

public class demo02 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入年龄:");
        int age = scanner.nextInt();
        String str = "老年";
        if (age < 0 || age > 150) {
            System.out.println("您输入的年龄不合法");
            return;
        } else {
            if (age <= 5) {
                str = "婴儿";
            } else if (age <= 10) {
                str = "少儿";
            } else if (age <= 18) {
                str = "少年";
            } else if (age <= 35) {
                str = "青年";
            } else if (age <= 55) {
                str = "中年";
            }
            System.out.println(str);
        }
    }
}

业务需求:
从键盘上接收天气的信息
1表示:雨天
0表示:晴天
同时从键盘上接收性别的信息
1表示:男
0表示:女
业务要求:
当天气是雨天的时候:
男的:打一把打黑伞
女的:打一把小花伞
当天气是晴天的时候:
男:直接走起,出去玩耍
女:擦点防护霜
需要使用if语句嵌套方法来展示这个业务

class test {
    public static void main(String[] args) {
        //创建键盘扫描对象
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入天气信息:1.表示雨天,0.表示晴天");
        //读取键盘输入的int值
        int sex = scanner.nextInt();
        System.out.println("请输入性别:1.表示男  0.表示女");
        //读取键盘输入的int值
        int weather = scanner.nextInt();
        if (weather == 1) {
            if (sex == 1) {
                System.out.println("请打一把黑伞");
            } else if (sex == 0) {
                System.out.println("打一把小花伞");
            }
        } else if (weather == 0) {
            if (sex == 0) {
                System.out.println("擦防护霜");
            } else if (sex == 1) {
                System.out.println("直接走起,出去玩耍");
            }
        }
    }
}

switch语句也可以叫分支语句
语法格式:

switch(值){//允许是String、int类型(byte、short、char可以转换为int)
case 值1:
java语句;
break;
case 值2:
java语句;
break;
case 值3:
java语句;
break;
default:
java语句;
}

业务:
[90,100]优
[60,90)良
[0,60)不及格

class  test{
    public static void main(String[] args) {
        /**
         *    [90,100]优
         *    [60,90)良
         *    [0,60)不及格
         */
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入学生成绩");
        double score = scanner.nextDouble();
        //0,1,2,3,4,5,6,7,8,9...
        int a = (int) (score / 10);

        if (a<0||a>100){
            System.out.println("成绩输入错误!");
        }
        String str= "不及格";
        switch (a) {
            case 10:
            case 9:
                str= "优";
                break;
            case 8:
            case 7:
            case 6:
                str= "良";
                break;
        }
        System.out.println(str);
    }
}

以上是一个完整的switch语句,其中:break,default不是必须的;
switch支持的值有哪些?
int、String类型,jdk8之前不支持String,只支持int

2、循环语句
for循环

for(初始化表达式;布尔表达式;更新表达式){循环体}
执行流程:先初始化表达式,再布尔表达式,为true,再走循环体,再更新表达式;再判断布尔表达式继续执行

while循环

while(布尔表达式){循环体}
执行次数0-n次

格式:
int i = 0;//初始化表达式
while (i < 10) {//布尔表达式
System.out.println(123);
i++;//更新表达式
}

do…while…循环

do{循环体}while(布尔表达式)
执行次数1-n次

格式:
//输出次数6
int x=0;//初始化表达式
do {
System.out.println(23);
x++;//更新表达式
}while (x<6);//布尔表达式

3、转向语句
break

//输出了一次i=1,下次就停止了
for (int i = 0; i <5
; i++) {
if (i==1){
break;
}
System.out.println(“输出了”);
}

continue

//终止本次循环 i=1,再执行下次循环
for (int i = 0; i < 5
; i++) {
if (i == 1) {
continue;
}
System.out.println(“输出了”);
}

return和break区别?
break是终止for循环,后面的内容不会执行,return是终止是离它最近的方法,后面的内容会执行

题目:
1、求1000以内,不能被7整除的和

2、计算1+2-3+4-5+6-7…+100的结果

3、从控制台输出一个正整数,计算该数字阶乘。例如:输入5,阶乘是54321

4、从控制台接收一个正整数,判断是是否是质数‘

5、从键盘输入一个正整数,该正整数作为行数,输出以下图形

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

输入5,打印上的5行

6、小芳的妈妈每天给她2.5块钱,她都会存起来,但是,每当这一天是存钱的第5天,或者5的倍数的话,都会花去6元,请问,经过多少天,消防才可以存到100元

6、一个数如果恰好等于它因子之和,这个数就是完整的,例如,6=1+2+3,编程呢个找出1000内所有的完数

答案

package test01;

import java.util.Scanner;

/**
 * 1000内,不能被7整除的和
 */
class SimpleDoWhile {

    public static void main(String[] args) {
        //在外部准备一个变量,存储求和结果
        int sum = 0;
        for (int i = 1; i < 1000; i++) {
            if (i % 7 != 0) {
                sum += i;
            }
        }
        System.out.println(sum);


    }

}

/**
 * 思路:
 * 循环过程中取出每个值,判断是偶数还是奇数,偶数就加,奇数就减
 */
class HomeWork2 {
    public static void main(String[] args) {
        int sum = 1;
        for (int i = 2; i <= 100; i++) {
            if (i % 2 == 0) {//偶数
                sum += i;
            } else {//奇数
                sum -= i;
            }
        }
        System.out.println("结果是" + sum);
    }
}

/**
 * 从控制台输出一个正整数,计算该数字阶乘。例如:输入5,阶乘是5*4*3*2*1
 */
class HomeWork3 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入正整数是:");
        int i = scanner.nextInt();
        //初始值不为0
        int result = 1;
        //循环递减
        for (int j = i; j > 1; j--) {
            result *= j;

        }
        System.out.println(result);

    }
}

/***
 * 从控制台接收一个正整数,判断是是否是质数
 * 质数:大于1的自然数,除了1和本身以外,不再有其他的因素的自然数
 * 因数:
 * 3*5=15;
 * 3和5都是15因数
 * 2,3,4,5,6,7中,2,3,4,5,7都是质数
 */

/**
 * 假设输入是:7
 * 7/1   不用判断
 * 7/2   需要判断
 * 7/3   需要判断
 * 7/4   需要判断
 * 7/5   需要判断
 * 7/6   需要判断
 * 7/7   不用判断
 * 所以7 是质数  ,除1和本身除外
 */
class HomeWork4 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个数字");
        int num = scanner.nextInt();

        boolean zhiShu = true;
        for (int i = 2; i < num; i++) {
            if (num % 2 == 0) {
                zhiShu = false;
                break;
            }
        }
        System.out.println(num + (zhiShu ? "是" : "不是") + "质数");
    }
}

/**
 * 从键盘输入一个正整数,该正整数作为行数,输出以下图形
 * <p>
 * *
 * ***
 * *****
 * *******
 * *********
 * 输入5,打印上的5行
 * <p>
 * 空格的规律:
 * 1行:4个空格
 * 2行:3个空格
 * 3行:2个空格
 * 2行:1个空格
 * 1行:0个空格
 * <p>
 * *的规律:
 * 1行:1个
 * 2行:3个
 * 3行:5个
 * 行号*2-1
 */
class HomeWork5 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个正整数作为行数");
        int rows = scanner.nextInt();
        //6行循环6次
        for (int i = 1; i < rows; i++) {
            //在这里将一行全部输出
            //使用循环输出*和空格
            for (int j = 0; j < rows - i; j++) {
                System.out.print(" ");
            }
            //n循环n次数i
            for (int k = 0; k < i * 2 - 1; k++) {
                System.out.print("*");
            }
            System.out.println();
        }

    }
}

/**
 * 小芳的妈妈每天给她2.5块钱,她都会存起来,但是,每当这一天是存钱的第5天,或者5的倍数的话,都会花去6元,请问,经过多少天,消防才可以存到100元/
 */
class HomeWork6 {
    public static void main(String[] args) {
        //定义一个默认初始化变量值
        int day = 0;
        double money = 0.0;

        while (money < 100) {
            day++;//天数+1
            money += 2.5;//钱加2.5
            //天数是5的倍数,那么花去6元
            if (day % 5 == 0) {
                money -= 6.0;
            }
        }
        System.out.println(day + "天" + "存了" + money + "钱");
    }
}

/**
 * 一个数如果恰好等于它因子之和,这个数就是完整的,例如,6=1+2+3,编程呢个找出1000内所有的完数
 * <p>
 * 什么完数:一个数字恰好等于它因子之和
 */
class HomeWork7 {
    public static void main(String[] args) {
        //1不是完数,从2开始
        for (int i = 2; i <= 1000; i++) {
            int sum = 0;
            for (int j = 1; j <= i / 2; j++) {

                if (i % j == 0) {
                    sum += j;
                }
            }
            if (i == sum) {
                System.out.println(i);
            }
        }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值