第二章-----Java流程控制

第一节、程序结构

 

顺序结构

分支机构

循环结构

第二节、分支结构

if分支:

1.if后面的大括号可以省略(后面只有一条语句的时候)

2.if后面的语句有多条的时候,一定要加大括号

3.else同理

建议:不管分支条件后面有几条语句,一定要加大括号,把多条语句变为一个整体

  1. if(){}
  2. if(){}else{}
  3. if(){}else if(){}else if(){} else{}

分支结构主要控制代码是否执行。

案例:输入你的java成绩,如果在90以上,输出 秀儿! 在 70--90之间输出,有点秀儿! 60-70 之间输出 一般般!60以下输出 垃圾!

switch case

//与if分支的区别:

1.if的条件是一个范围

2.switch的条件是一个固定值

switch:用于固定值的分支判断,后面可以跟char,byte,short,int,String

不能跟 float,double,long

break可以省略,省略之后,代码会贯穿执行

switch(参数){
	case value1:
		代码块1;
	break;
	case value2:
		代码块2;
	break;
	case value3:
		代码块3;
	break;
	case value4:
		代码块4;
	break;
	default:
		代码块:
	break;
}

首先用switch后边括号中的参数跟下边的value依次比较,如果第一个不满足就比较第二个,如果满足执行后边对应的代码块。(如果前边的条件都不满足)到 default为止。

案例:输入年和月,输出该年的该月有多少天?

//输入年和月,输出该年的该月有多少天?
    /**
     * 分析:
     *      1,3,5,7,8,10,12  31天
     *      4,6,9,11,         30天
     *      2 闰年 29天   普通28天
     */
    public static void main(String[] args) {
        System.out.println("请输入年");
        Scanner sc1 = new Scanner(System.in);
        int year = sc1.nextInt();
        System.out.println("请输入月");
        int month = sc1.nextInt();
        //逻辑
        switch (month){
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                System.out.println("该月有31天");
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                System.out.println("该月有30天");
                break;
            case 2:
                //闰年的条件  能被400整除   或者  能被4整除并且不能被100整除
                if (year%400==0 || year%4==0 && year%100!=0){
                    System.out.println("该月有29天");
                }else{
                    System.out.println("该月有28天");
                }
                break;
            default:
                System.out.println("输入数据不合法");
                break;
        }

 //创建java输入工具类对象

Scanner scanner = new Scanner(System.in);

String name = scanner.next();        //next():接受输入的字符串内容

int age = scanner.nextInt();        //nextInt():可以将用户输入的字符串转为整型

double tall = scanner.nextDouble();        //nextDouble():可以将输入的字符串转为小数

boolean hasFriend = scannner.nextBoolean();        //nextBoolean():将输入的内容转为布尔值

第三节、循环结构

循环分类:        固定次数循环,不定次数循环

1.while 循环

可以用于固定次数循环,也可用于不定次数循环,先进行条件判断,再做循环处理

循环四要素: ①初始化变量,②循环条件,③循环体,④循环变量的自增。

注意避免:

​ while(true) 如果这样,循环永远出不来。

​ while(false) 循环进不去。

案例1

代码实现:

​ 三要素:条件,执行的代码,变量自增

2. do while循环

可以用于固定次数循环,也可用于不定次数循环,先做一次处理,再进行条件判断

while 先判断再执行

do while 先执行一次再判断

do while至少会执行一次。

3.for循环

一般用于固定次数循环

for( 初始化变量①;判断条件②;步进表达式④){

​ 循环体③;

}

① 初始化变量

②判断条件

③循环体

④循环变量的自增

①-》②-》③-》④-》②-》③-》④-》②-》③-》④。。。-》②如果条件不满足直接结束循环。

 案例:99乘法表

//99乘法表
        for (int i = 1; i < 10; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j+"*"+i+"="+i*j+" ");
            }
            System.out.println();
        }
        System.out.println("---------------------------------");
        for (int i = 9; i >=1; i--) {
            for (int j = 1; j <=i; j++) {
                System.out.print(j+"*"+i+"="+i*j+" ");
            }
            System.out.println();
        }
        System.out.println("---------------------------------");
        for (int i = 1; i < 10; i++) {
            for (int j = 9; j >=i; j--) {
                System.out.print(j+"*"+i+"="+i*j+" ");
            }
            System.out.println();
        }
​
        System.out.println("---------------------------------");
        for (int i = 9; i >=1; i--) {
            for (int j = 9; j >= i; j--) {
                System.out.print(j+"*"+i+"="+i*j+" ");
            }
            System.out.println();
        }

输出时,这些符号有特殊含义:

 4.循环控制关键字 break和continue

 break:遇到break循环终止执行,与循环结合使用,代码会继续向下执行循环后面的内容

如果有多重循环,break只退出离他最近的循环

return:与方法结合使用,当遇到return关键字的时候,方法执行结束,return后面的代码不再执行

continue:遇到continue会跳过continue后面的代码不执行,换行进入下次循环

不定次数循环:

//吃包子
Scanner scanner = new Scanner(System.in);
//定义变量,统计包子的个数
int count = 0;
while(true){
    System.out.println("吃一个包子");
    count++;
    //询问
    System.out.println("请问你吃饱了吗(Y/N)");
    //回答
    String answer = scanner.next();
    //作为循环终止的条件
    if(answer.equals("Y")){    //字符串判断不能用==
        System.out.println("下次再来!");
        break;
    }
}
System.out.println("一共吃了"+count+"个包子");

循环

1.循环录入五次成绩,求和  求平均值  求最大值  求最小值。

//循环录入数据,求和 求平均值 求最大值 求最小值。
        double sum = 0;
        double max = 0;
        double min = 0;
        for (int i = 1; i <= 5; i++) {
            System.out.println("请输入第"+i+"次成绩");
            Scanner sc = new Scanner(System.in);
            double score = sc.nextDouble();
            sum+=score;
            //假设:默认第一个输入的数既是最大值 也是最小值   比武招亲打擂台
            if(i==1){
                max = score;
                min = score;
            }
            if(max < score){
                max = score;
            }
            if(min > score){
                min = score;
            }
        }
        System.out.println("和是"+sum+",平均值是"+sum/5+",最大值:"+max+";最小值:"+min);

有一个等式 12()34()56()78()9 = 59,括号中只能放加和减,如果要使等式成立,那么每个括号中应该放哪些符号。

有一个等式   12(a*)34(b*)56(c*)78(d*)9 = 59,括号中只能放加和减,如果要使等式成立,那么每个括号中应该放哪些符号。
/* 12+34-56+78-9=59
分析:数学问题
    括号中放+ 相当于 12 + 34 ===》 12 + 1*34
    括号中放- 相当于 12 - 34 ===》 12 + (-1)*34
    每一个括号中的值都有两种可能 1或者-1
    
    有一个等式   12()34()56()78()9 = 59,
        括号中只能放加和减,如果要使等式成立,那么每个括号中应该放哪些符号。
        先转化成数学问题
        12 + 34 - 56 + 78 - 9 = 59 ---》
        12+(+1*)34+(-1*)56+(+1*)78+(-1*)9=59-->12+(a*)34+(b*)56+(c*)78+(d*)9 = 59
        括号中只有两种情况要么+1  要么 -1
 */
for(int a=-1;a<2;a+=2){
    for(int b=-1;b<2;b+=2){
        for(int c=-1;c<2;c+=2){
            for(int d=-1;d<2;d+=2){
                if(12+a*34+b*56+c*78+d*9==59){
                    System.out.println(a+","+b+","+c+","+d);
                }
            }
        }
    }
}

计算sum=1-1/2+1/3-1/4+1/5-……+1/99的值。

//计算sum=1/1-1/2+1/3-1/4+1/5-……+1/99-1/100的值。
        //sum = 1 - (1/2+...+1/100) + (1/3+...+1/99);
        //方法一
        /*double sum=0;
        for (double i = 1; i < 101 ; i++) {
            if(i%2==0){
                sum-=1/i;
            }else{
                sum+=1/i;
            }
        }
        System.out.println(sum);*/
​
        //方法二
        /*double i,j,sumi=0,sumj=0,sum=0;
        for(i=2;i<=100;i+=2){
            sumi += 1/i;
        }
        for(j=3;j<=99;j+=2){
            sumj += 1/j;
        }
        sum = 1-sumi+sumj;
        System.out.println(sum);*/
​
        //方法三
        double a = 0;
        double b = -1;
        for (double i = 1; i <=100; i++) {
            b = b*(-1);
            a += b*(1/i);
        }
        System.out.println(a);

Math.round()        //取整 double--->int

Math.round()方法会将浮点值四舍五入到最接近的long值。然后我们可以将其转换为int类型

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值