<训练营>初学Java-Java基础知识-流程控制day03

<训练营>初学Java-Java基础知识-流程控制day03,第1张

1分支结构

流程控制是控制指令执行顺序,达到控制计算步骤实现各种算法

3种流程控制:

  • 顺序流程控制
  • 分支流程控制
  • 循环流程控制
1.1单路分支流程控制

根据分支条件选择一路流程

语法:

if(分支条件){
    语句块
}
  •  分支条件:必须是boolean表达式,经过计算以后得到Boolean值
  • 语句块:分支条件得到true时候,执行语句块,分支条件得到false则不执行语句块
  • 如果语句块只有一行代码,则可以省略(),我们都很少省略!

执行流程(图解):

 

代码测试:

public class Demo01 {
    public static void main(String[] args) {
        /**
         * 测试 单路 分支流程控制
         */
        double total = 501;
        if (total>=500){
            total*= 0.8;
        }
        System.out.println(total);
    }
}

控制台展示:

 

1.3字符串连接

字符串和其他类型数据使用“+”运算,得到字符串数据

public class Demo02 {
    public static void main(String[] args) {
        /**
         * 字符串连接
         */
        int num = 50;
        String s = "消费数量:"+num;
        //消费数量:50
        System.out.println(s);
        System.out.println("消费数量"+num);
    }
}

控制台展示:

1.4从控制台获取数据

Java提供了API,可以从控制台窗口中获取数据

API,Java提供的线程组件,可以直接拿到使用

  • Java.util.Scanner API,可以读取控制台数据。Scanner可以从控制台扫描读取数据
  • 使用步骤:
import java.util.Scanner;//导入被使用的API

public class Demo03 {
    public static void main(String[] args) {
        /**
         * 从控制台获取数据
         */
        Scanner sc = new Scanner(System.in);//创建Scanner对象。
        System.out.println("请您输入购买的金额:");
        //sc.nextDouble();等待用户的输入,用户输入数据并且回车以后。
        //继续执行将数据返回,存储到total
        double total = sc.nextDouble();//Block  阻塞
        System.out.println("购买金额为:"+total);
    }
}

控制台展示:

 

 改进Demo01

import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        /**
         * 测试 单路 分支流程控制
         */
        Scanner sc = new Scanner(System.in);
        System.out.println("输入金额:");
        double total = sc.nextDouble();
        if (total>=500){
            total*= 0.8;
            //打桩语句:跟踪软件的执行流程
            System.out.println("打八折!!!");
        }
        System.out.println("消费金额:"+total);
    }
}

控制台展示:

 

1.5print 和println的区别 

print 打印,输出

println 打印一行,输出一行

  • print()输出的时候,输出内容,后续没有回车字符
  • println()输出的时候,输出内容后,后续添加了回车字符
  • 对后续内容产生影响
    • 没有回车的时候,后续内容在本行出现
    • 有回车的时候,后续内容在下一行出现
  • 参数的println会输出一个回车字符
  • 效果展示:
public class Demo04 {
    public static void main(String[] args) {
        /**
         * 区别 print 和 println
         */
        System.out.print("Hello World!");//不换行输出
        System.out.print("Hello World!");
        System.out.println();//换行
        System.out.println("Hello World!");//换行输出
        System.out.println("Hello World!");
    }
}

控制台展示:

 

1.6双路路分支流程控制

根据分支条件在两路中选择选择一路流程执行

语法:

if(分支条件){
    语句块1
} else {
    语句块2
}
  • 计算分支条件,返回boolean值
  • 如果分支条件返回true,则执行语句块1 
  • 如果分支条件返回false,则执行语句块2

执行流程(图解):

 

代码展示:

import java.util.Scanner;

public class Demo05 {
    public static void main(String[] args) {
        /**
         * if else 双路分支流程控制
         */
        Scanner sc = new Scanner(System.in);
        System.out.println("输入金额:");
        double total = sc.nextDouble();
        //判断条件:如果用户购买的东西大于500块钱的话就打8折扣否则打95折
        if (total >=500){
            total *= 0.8;
            System.out.println("打八折");
        }else{
            total *= 0.95;
            System.out.println("打九五折");
        }
        System.out.println("消费金额:"+total);
    }

}

控制台展示1:

控制台展示2:

 

案例:商品金额15元/件,购买一件5折,两件以上95折 ,根据用户输入的购买数量计算总金额(练习题)

答案:

import java.util.Scanner;

public class Demo06 {
    public static void main(String[] args) {
        /**
         * 案例:商品金额15元/件,购买一件5折,两件以上95折 ,
         *      根据用户输入的购买数量计算总金额(练习题)
         */
        Scanner sc = new Scanner(System.in);
        //定义商品价格
        double price = 15.0;
        //定义总价格
        double total = 0;
        //请用户输入要购买几件
        System.out.println("请您输入要购买几件:");
        int num = sc.nextInt();//让用户输入整数
        //判断用户购买了几件商品
        if (num==1){
            //用户购买了1件商品打5折
            total = (price * num) * 0.5;
            System.out.println("打5折");
        } else {
            //用户购买了大于1件以上商品打95折
            total = (price * num) * 0.95;
            System.out.println("打95折");
        }
        System.out.println("用户购买了"+num+"件商品,打完折后价格为:"+total);
    }
}

控制台展示1:

控制台展示2: 

1.7变量的作用域

变量的有效作用范围

  • 在方法中从变量声明位置开始,到当前语句块结束
  • 在同一个作用域中不能重复定义变量
  • 尽量使用小作用域

变量作用域(图解):

 

1.8多路分支流程控制

根据分支条件在多个执行线路中选择一个执行。

语法:

if(分支条件1){
    语句块1
} else if(分支条件2){
    语句块2
} else if(分支条件3){
    语句块3
} else {
    语句块4
} 

执行流程(图解) 

 

代码演示:

import java.util.Scanner;

public class Demo08 {
    public static void main(String[] args) {
        /**
         * 多路分支流程
         */
        Scanner sc = new Scanner(System.in);
        System.out.println("输入消费金额:");
        double total = sc.nextDouble();
        if (total < 200) {
            total *= 0.95;
            System.out.println("95折");
        } else if (total < 500) {
            total *= 0.8;
            System.out.println("8折");
        } else if (total < 2000) {
            total *= 0.7;
            System.out.println("7折");
        } else {
            total *= 0.5;
            System.out.println("5折");
        }
        System.out.println("您需要支付:" + total);
    }
}

控制台效果展示1; 

控制台效果展示2; 

控制台效果展示3; 

控制台效果展示4; 

小练习:电子配件价格计算

答案:

import java.util.Scanner;

public class Demo09 {
    public static void main(String[] args) {
        /**
         * 电子配件价格计算
         */
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要买的个数:");
        int quantity = sc.nextInt();
        double amount = 0;
        if (quantity<50){
            System.out.println("太少不卖!!!");
            return;
        }else if ( quantity < 500) {
            amount = quantity * 0.099498;
        } else if ( quantity < 1500) {
            amount = quantity * 0.07999;
        } else if ( quantity < 5000) {
            amount = quantity * 0.065847;
        } else if ( quantity < 25000) {
            amount = quantity * 0.054181;
        } else if ( quantity < 50000) {
            amount = quantity * 0.052192;
        } else {
            amount = quantity * 0.051208;
        }
        System.out.println("您购买了"+quantity+"个东西总计消费:"+amount);
    }
}

控制台展示:

 

1.9循环流程控制

可以根据循环条件反复执行一个流程.

Java中分别有3中循环

  • for 循环 :一般用于计次循环
  • while 循环 :一般不限定次数循环
  • do while 循环 :一般不限定次数循环
1.9.1for循环

一般用于计次循环,在循环之前知道循环次数

语法:

for ( 初始化 ; 循环条件 ; 递增 ) {
    循环体
}

执行流程(图解):

 

代码展示:

public class Demo10 {
    public static void main(String[] args) {
        /**
         * for循环演示
         */
        for (int i = 1; i <= 3; i++) {
            System.out.println(i);
        }
        for (int i = 7; i <= 11; i+=2) {
            System.out.println(i);
        }
    }
}

控制台展示:

 

小案例:计算1 + 2 + 3 .... + 100 = ?;

public class Demo11 {
    public static void main(String[] args) {
        /**
         * 计算1 + 2 + 3 .... + 100 = ?;
         */
        int sum = 0;
        for (int i = 1; i <= 100; i++) {
            //sum = 0 1 3 6 10
            // i = 1  2  3  4  5 .... 100
            sum += i;
        }
        System.out.println(sum);
    }
}

控制台展示:

 练习:累加 2 + 4 +6 + ... +100 = ?

public class Demo12 {
    public static void main(String[] args) {
        /**
         *  练习:累加 2 + 4 +6 + ... +100 = ?
         */
        int sum = 0 ;
        for (int i = 2; i <= 100; i+=2) {
            sum += i;
        }
        System.out.println(sum);
    }
}

控制台展示:

案例:逢7必过 , 输出1 ~ 100

public class Demo13 {
    public static void main(String[] args) {
        /**
         * 案例:逢7比过
         * 输出1~100
         */
        for (int i = 1; i < 100; i++) {
            if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7){
                System.out.println("*");
            }else{
                System.out.println(i);
            }
        }
    }
}

控制台展示:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/730763.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-27
下一篇 2022-04-27

发表评论

登录后才能评论

评论列表(0条)

保存