流程控制是控制指令执行顺序,达到控制计算步骤实现各种算法
3种流程控制:
- 顺序流程控制
- 分支流程控制
- 循环流程控制
根据分支条件选择一路流程
语法:
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 循环 :一般不限定次数循环
一般用于计次循环,在循环之前知道循环次数
语法:
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);
}
}
}
}
控制台展示:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)