java基础(05)、程序流程控制
2018-06-27 09:58:33来源:未知 阅读 ()
java基础--程序流程控制
目录
一. 顺序结构(宏观上)
二. 分支结构/选择结构
2.1 if语句
2.2 switch语句
三. 循环结构
3.1 for循环
3.2 while循环
3.3 do while循环
3.4 三种循环的区别
3.5 循环嵌套
3.6 其他流程控制语句(break,continue)
一些笔记
- for循环中,for( )括号里定义的变量,循环外无法进行访问。
- break:终止当前的循环体(switch结构和循环结构中使用);在switch中,case下若没有break则会贯穿,主要用于在满足多种场景下输出相同结果。
- continue:结束本次循环,进入下一次循环(只用于循环结构)
- 获得一个double型的随机数,范围是【[0~1)】(可以是0,最大不为1):Math.random()
- 扩展:获得一个0-99的随机数:(int)(Math.random()*100);
- 获得一个120-500之间的随机数:(int)(Math.random()*(500-120+1)+120);
- 键盘录入的方法(需熟记):next和nextLine的区别:
- 导入包:import java.util.Scanner;
- 创建扫描对象:Scanner s = new Scanner(System.in);注:同类下,创建一次即可多次使用。
- 调用扫描对象的方法,从键盘获得数据:s.nextInt(); //获取int值,如 int i = nextInt(); 用s.next()获取字符串
next() 只读取回车之前的内容 nextLine() 读取内容和回车,如果之前有回车没有被读取,那么剩下的回车直接会被读取 Scanner s = new Scanner(System.in); String s1 = s.next(); System.out.println(s1); //next()方法只会读取回车之前的内容,所以,还有一个回车符剩余,将被nextLine方法读取到 String s2 = s.nextLine(); System.out.println(s2); //读取到上一次next方法剩余的回车符之后,s2就是一个回车符,然后程序就把回车符输出,就结束了
一. 顺序结构
- 语句按照顺序依次执行
- 单纯的顺序结构的程序基本不存在
但是,大型程序从宏观上来看的话,各个模块之间也是呈现顺序结构
二. 分支结构
- 分支结构:也称选择结构,程序根据条件表达式的值来决定程序的走向
2.1 If语句
if语句的第一种格式
1 if(条件表达式){
2 语句体;
3 }
4 ...//其它语句
if语句的第二种格式
if(条件表达式){
语句体1;
}else{
语句体2;
}
...//其它语句
if语句的第三种格式
if(条件表达式1){
语句体1;
}else if(条件表达式2){
语句体2;
}else if(条件表达式3){
语句体3;
}
...
else{
语句体n;
}
if语句注意事项:
- if后的括号内一定是布尔值或者布尔表达式
- 第二种格式与三元运算符的区别:三元运算符运算完要有值出现,并且可以写在其他表达式中
- if的语句块中可以加多条语句,实现更复杂的逻辑
- if/else后边的大括号可以省略,此时if语句只能控制到第一个分号结束;如果有多条语句的话,不能省略
建议不要省略大括号
如何从键盘录入数据?
import java.util.Scanner;
Scanner s = new Scanner(System.in);
s.nextInt(); //获取int值,用s.next()获取字符串
2.2 switch语句
格式:
switch(表达式或变量){
case 取值1:
语句体1;
break;
case 取值2:
语句体2;
break;
…
default:
语句体n+1;
break;
}
switch注意事项:
- switch语句表达式的类型有:byte,short,int,char,String(1.7之后才支持)和枚举类型
- case之间与default没有顺序:case相当于入口点,没有匹配的case将执行default,default也不是必须的
- 结束switch语句的情况:遇到break或执行到switch语句结束
- 如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾
switch案例
从键盘输入月份数字,显示是第几个季度。
/*
从键盘输入月份数字,显示是第几个季度
*/
import java.util.Scanner;
public class SwitchDemo2{
public static void main(String[] args){
Scanner s = new Scanner(System.in);
System.out.print("请输入月份:");
int month = s.nextInt();
switch(month){
case 1:{
// System.out.println(month + "属于第一季度");
// break;
}
case 2:{
// System.out.println(month + "属于第一季度");
// break;
}
case 3:{
System.out.println(month + "属于第一季度");
break;
}
case 4:{
// System.out.println(month + "属于第二季度");
// break;
}
case 5:{
// System.out.println(month + "属于第二季度");
// break;
}
case 6:{
System.out.println(month + "属于第二季度");
break;
}
case 7:{
// System.out.println(month + "属于第三季度");
// break;
}
case 8:{
// System.out.println(month + "属于第三季度");
// break;
}
case 9:{
System.out.println(month + "属于第三季度");
break;
}
case 10:{
// System.out.println(month + "属于第四季度");
// break;
}
case 11:{
// System.out.println(month + "属于第四季度");
// break;
}
case 12:{
System.out.println(month + "属于第四季度");
break;
}
default :{
System.out.println("输入的月份有误");
break;
}
}
}
}
三. 循环结构
概述:
- 循环语句可以在满足循环条件的情况下,反复执行某一段代码
- 被反复执行的代码称为循环体
- 需要在适当的时候,把循环条件改为假,从而结束循环,否则循环将一直执行下去,形成死循环
- 完整的循环应该包含以下四个部分:
- 初始化语句:初始化工作,在循环体开始之前执行
- 循环条件:一个boolean表达式,决定是否执行循环体
- 循环体:反复执行的部分
- 迭代语句:在循环体执行完之后执行,然后再去判断循环条件,一般用来控制循环条件中的变量,使循环在合适的时候结束
3.1 for循环
格式
for(初始化表达式;条件表达式;循环变量控制语句){
循环体语句;
}
for运行的顺序:
- 执行初始化表达式,只执行一次,通常是定义循环变量语句
- 判断循环条件:为真就往下执行;为假就结束循环
- 执行循环体语句
- 执行循环变量控制语句,一般是循环变量的自增或自减
- 回到第2步,重复这个过程,直到为假时结束
for循环注意事项:
- 循环变量通常定义为int型,因为最常用的就是int型
- 循环条件判断的结果是boolean类型值
- 小括号中的分号不能写成中文的分号
- 如果循环体只有一条语句的话,可以省略大括号,但建议写全
- 循环变量控制语句不必每次改变1,根据情况,可以是任意值
for循环求和思想
求和思想:在循环体之外定义一个变量,循环体中不断的往这个变量中追加。
//求1-10所有数之和
public class ForDemo{
public static void main(String[] args){
int sum = 0;
for (int i = 1;i <= 10;i ++){
sum += i;
}
System.out.println(sum);
}
}
for循环练习
/*
在1-100之间,若是3的倍数,则在它之后输出中文“三”,若是5的倍数,
则在它之后输出中文“五”,若是7的倍数,则在它之后输出中文“七”
*/
public class ForDemo{
public static void main(String[] args){
for(int i = 1;i<=100;i++){
System.out.print(i);
if(i % 3 == 0){
System.out.print(" 三");
}
if(i % 5 == 0){
System.out.print(" 五");
}
if(i % 7 == 0){
System.out.print(" 七");
}
System.out.println();
}
}
}
3.2 while循环
格式
[初始化部分]
while(条件表达式){
循环体语句;
[循环变量控制语句]
}
执行流程:
- 执行初始化语句(如果有的话)
- 判断条件表达式真假:如果真,往下执行;如果假,结束循环
- 执行循环体语句
- 执行循环变量控制语句(如果有的话)
- 返回第2步,重复执行,直到条件为假,结束循环
for 和 while 的应用场景
- 当明确知道循环的范围的时候,通常使用for
- 当不明确循环次数的时候,for和while都可以,通常使用while
不明确循环次数案例:
已知:珠穆朗玛峰的高度是:8848米,假设有一张足够大的纸,厚度是0.01米,请问:这张纸折叠多少次可以保证厚度不低于珠穆朗玛峰的高度?
1 public class WhileDemo{ 2 public static void main(String[] args){ 3 int count = 0; 4 double hill = 8848.0; 5 double paper = 0.01; 6 7 while(paper < hill){ 8 count++; 9 paper = paper * 2; 10 System.out.println("当前折叠的次数是: " + count + ",当前纸的厚度是: " + paper); 11 12 } 13 System.out.println("折叠的次数是:"+count); 14 15 } 16 }
循环变量的使用问题
for循环的循环变量,一般情况下在循环外是不能访问到的,因为它的作用域是在for循环的{}之内,但是可以通过把循环变量定义在外边来实现这个功能;或者定义计数器
while循环本身就把循环变量定义在循环之外,所以没有这个问题
/*
这是个错误的程序,for{}外面的i无法访问
*/
for(int i = 0;i<10;i++){
...
}
System.out.println(i); //错误
int i = 0;
for(;i<10;i++){
...
}
System.out.println(i); //正确
3.3 do while循环
do while语句格式
1 [初始化部分] 2 do { 3 循环体语句; 4 [循环变量控制语句] 5 }while(条件表达式);
执行流程
- 执行初始化部分(如果有的话)
- 执行循环体语句
- 执行循环变量控制语句(如果有的话)
- 判断条件表达式,如果为真,返回第2步;如果假,结束循环
特点:循环体至少会被执行一次
3.4 三种循环的区别
- while与for可以互换
- do-while循环的循环体语句至少执行一次
优先选择使用for循环
死循环:条件表达式永远为true
1 //while死循环
2 while(true){
3 ...
4 }
5
6 //for死循环
7 for(;;){
8 ...
9 }
3.5 循环嵌套
- 外层循环表达式为真时,进入内存循环条件的判断;
- 内层循环结束时,跳到外层循环继续判断外层循环的条件。
实战练习:用循环嵌套带打印99乘法表
/* 用循环嵌套带打印99乘法表 */public class Xx{ public static void main(String[] args){ int b = 1; do{ for(int a = 1;a <= b;a++){ System.out.print(a+"*"+ b+"="+ a * b+"\t"); } System.out.println(); b++; }while( b <= 9); } }
3.6 其他流程控制语句
break语句:终止当前循环;switch结构和循环结构中使用
continue语句:结束本次循环,进入下一次循环;只在循环结构中使用
注:
- 这两个语句离开应用范围是没有意义的
- 这两个语句所在的代码块内,这两个语句之后不能再有任何内容,因为其后的内容永远也执行不到
break的使用:
1 //跳出循环或者是结束switch语句 2 for(int i = 1;i<10;i++){ 3 System.out.println(i); 4 if (i == 5) { 5 break; //当i为5时,结束当前for循环 6 } 7 } 8 9 10 //break在无限循环中的使用 11 for(;;){ 12 ... 13 if(条件表达式){ 14 break; 15 } 16 }
continue的使用
//continue:结束本次循环,进入下一次循环 for(int i = 1;i<10;i++){ if(i % 2 == 0){ continue; //进入下一次循环,后面的语句不会被执行 } System.out.println(i); }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash