Java基础语法02——流程控制
Java基础语法02——流程控制
流程控制:顺序结构、分支结构(if-else、switch-case)、循环结构(for、while、do-while)
实现从键盘获取不同类型的变量——Scanner类
步骤:
导包:
import java.util.Scanner;Scanner实例化:
Scanner scan = new Scanner(System.in);调用Scanner的相关方法,来获取指定类型的变量:格式:
Scanner.方法String类型——next()
int类型——nextInt()
double类型——nextDouble()
分支结构1——if-else结构
三种形式:
/*
if(条件表达式){
执行语句;
}
*/
/*
if(条件表达式){
执行语句1;
}else{
执行语句2;
}
*/
/*
if(条件表达式1){
执行语句1;
}else if(条件表达式2){
执行语句2;
}else if (条件表达式3){
执行语句3;
}
````````
else{
执行语句n;
}
*/
if-else结构可以相互嵌套
【一旦满足,就会退出结构】
只有一个执行语句时,{}可以省略,但不建议省,容易出错
——>拓展:如何获取一个随机数?[a,b]
使用Math类下的random方法,产生的是double类型的数据,且范围为[0.0,1.0)
公式:int m = (int)Math.random()*(a-b+1)+a;
分支结构2——switch-case结构
switch-case结构格式:
/*
switch(表达式)//不是条件表达式
case 常量1:
执行语句1;
break;//非必须
case 常量2:
执行语句2;
break;//非必须
······
default:
执行语句;
*/
- 过程:将switch表达式的值与case常量的值匹配,匹配成功,执行相应case下的语句;执行后继续向下执行case其他执行语句,直至遇到break关键字或结构末尾结束。
- break关键字:可用在switch-case结构中,(可选的)遇到此关键字,跳出结构
- switch后表达式只能是如下六种类型:byte、short、int、char、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)
- default:可选的,位置灵活的
循环结构1——for循环
循环结构的四个部分:初始部分、循环条件部分、循环体部分、迭代条件部分
for循环的结构:
/*
for(初始;循环条件;迭代){
循环体
}
//()里每一部分可以有多条语句
//执行过程:初始——循环条件(结果为boolean类型)——(true)循环体——迭代——循环条件判断——循环体——迭代——······
*/
//举例:输出5条HelloWorld语句
public class Demo{
public static void main(String[] args){
for(int i=1;i<=5;i++){
System.out.println("HelloWorld");
}
}
}
break关键字的使用:遇到break,循环结束;跳出循环结构
循环结构2——while循环
while循环的结构
/*
初始
while(循环条件){
循环体;
迭代条件;//小心不要忘记,否则容易死循环
}
//执行过程:初始——循环条件(结果为boolean类型)——(true)循环体——迭代——循环条件判断——循环体——迭代——······
*/
循环结构3——do-while循环
do-while循环结构:
/*
初始
do{
循环体;
迭代条件;
}while(循环条件)
//执行过程略有不同:初始——循环体——迭代——循环条件——循环体——迭代——循环条件——······
//注意:do-while循环的循环体至少执行一次
*/
开发中使用前两种循环的情况比较多
——>拓展:最简单“无限循环格式”:while(true)或for(;;) ——不知道循环次数是多少——可以通过break结束循环。
例题:从键盘输入多个不确定的整数,并输出正数和负数的个数,输入0时结束循环##
import java.util.Scanner;
public class Test1{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int postivenumber = 0;
int negtivenumber = 0;
while(true){
int num = scan.nextInt();
if(num>0){
postivenumber++;
}else if(num<0){
negtivenumber++;
}else{
break;
}
}
System.out.println(postivenumber);
System.out.println(negtivenumber);
}
}
嵌套循环
层数不会太多,一般不会超过三层
将一个循环结构A声明在另一个循环结构B的循环体中,就构成了嵌套循环
外层循环:B;内层循环:A
说明:
- 内层循环执行一遍,相当于外层循环执行一次
- 假设外层循环需要执行m次,内层循环需要执行n次。此时,内层循环的循环体一共执行了m*n次
- 技巧:外层循环控制行数,内层控制列数
//应用1:九九乘法表
public class Test1{
public static void main(String[] args){
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(i+"*"+j+"="+i*j+" ");
}
System.out.println();
}
}
}
/*应用2:输出100以内的质数(常见笔试题)
质数:(素数)只能被1和它本身整除的自然数【最小的质数2】
——2~这个数-1 都不能被这个数整除
*/
public class Test2{
public static void main(String[] args){
boolean b = true;//标识i是否被j除尽,一旦除尽,立刻更改其值
for(int i=2;i<=100;i++){
for(int j=2;j<=Math.sqrt(i);j++){//优化二:将j<i-1改成小于根号i
if(i%j==0){
b=false;
break;//优化一:对本身是非质数的自然数的处理,只要有除尽的 就不是质数了
}
}
if(b==true){
System.out.println(i);
}
b=true;//重置b变量
}
}
}
break、continue关键字的使用
| 使用范围 | 循环中使用的作用 | 相同点 | |
|---|---|---|---|
| break | 循环结构 | 结束当前循环 | 关键字后面不能声明执行语句 |
| continue | 循环结构 | 结束当次循环 | 关键字后面不能声明执行语句 |
//说明1
public class Test3{
public static void main(String[] args){
for(int i=1;i<=10;i++){
if(i%4==0){
//break;//输出:1 2 3
continue;//输出:1 2 3 5 6 7 9 10
}
System.out.print(i+" ");
}
}
}
//说明2:在嵌套循环中,break(continue)作用于离关键字最近的一层循环;
//如果想要指定对某一层循环起作用,可以使用标签,例子如下:
public class Test1{
public static void main(String[] args){
label:for(int i=1;i<=4;i++){
for(int j=1;j<=10;j++){
if(j%4==0){
break label;
//continue;
}
System.out.print(j+" ");
}
System.out.println();
}
}
}//输出结果:1 2 3
Java基础语法02——流程控制的更多相关文章
- Java基础语法(4)-流程控制
title: Java基础语法(4)-流程控制 blog: CSDN data: Java学习路线及视频 1.程序流程控制 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定 ...
- Java基础语法与流程控制
Java基础语法与流程控制 跟着狂神学Java的第二天O(∩_∩)O~,养成一个总结的习惯 志同道合的小伙伴可以一起学习狂神的视频 本节地址:https://www.kuangstudy.com/co ...
- Unit04: JavaScript 概述 、 JavaScript 基础语法 、 流程控制
Unit04: JavaScript 概述 . JavaScript 基础语法 . 流程控制 my.js function f3() { alert("唐胜伟"); } demo1 ...
- 020 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 14 变量与常量 知识总结
020 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 14 变量与常量 知识总结 本文知识点:变量与常量 知识总结 Java中的标识符 Java中的关键字 目前常 ...
- 019 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 13 数据类型转换的代码示例
019 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 13 数据类型转换的代码示例 本文知识点:Java中的数据类型转换案例 学习视频有误,导致没法写文,文章内容 ...
- 018 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 12 数据类型转换的基本概念
018 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 12 数据类型转换的基本概念 本文知识点:Java中的数据类型转换 类型转换 类型转换分类 2类,分别是: ...
- 017 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 11 变量综合案例
017 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 11 变量综合案例 本文知识点:变量 相同类型的变量可以一次同时定义多个 例:可以一行代码同时定义2个变量x ...
- 016 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 10 布尔类型和字符串的字面值
016 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 10 布尔类型和字符串的字面值 本文知识点:字面值 关于字面值的概念,需要注意:很多地方,我们可能就把字面值 ...
- 015 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 09 Unicode编码
015 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 09 Unicode编码 本文知识点:Unicode编码以及字符如何表示? ASCII码是美国提出的标准信息 ...
随机推荐
- 朴素版Dijkstra
我们之前介绍的求最短路问题,我们通常会考虑到用BFS算法计算,这里我们将这样对于求最短路问题用不同的算法进行分类: 思路介绍:Dijkstra算法的思路究竟是怎么样的,我们这里先介绍一下朴素版Dijk ...
- Three.js 火焰效果实现艾尔登法环动态logo 🔥
声明:本文涉及图文和模型素材仅用于个人学习.研究和欣赏,请勿二次修改.非法传播.转载.出版.商用.及进行其他获利行为. 背景 <艾尔登法环>是最近比较火的一款游戏,观察可以发现它的 Log ...
- 5分钟了解Redis的内部实现快速列表(quicklist)
快速列表简介 在Redis3 .2版本之前,存储列表(list)数据结构使用的是压缩列表(ziplist)和链表(linkedlist),当列表元素个数比较少并且每个元素占用空间比较小的时候,使用压缩 ...
- Adobe AIR 应用程序图标详细描述
官方PDF文档: http://help.adobe.com/zh_CN/air/build/WS901d38e593cd1bac1e63e3d129907d2886-8000.html#WS901d ...
- 解决Flash CS6初始化字体就自动退出
系统win7 问题始于安装了同事的字体,启动Flash CS6时界面上显示开始初始化字体...然后 就自动退出了 尝试过进入pe系统删除字体,可是删除不了 网上搜索找到了这一个删除字体的工具FontF ...
- 多数据源并且数据库类型不同的情况下PageHelper的使用
一.问题来源 最近开发一个项目需要依赖两个数据源,数据源类型分别为oracle和postgresql,代码中使用com.github.pagehelper分页插件进行分页,代码运行过程中postgre ...
- 什么是内部类?Static Nested Class和Inner Class的不同?
内部类就是在一个类的内部定义的类,内部类中不能定义静态成员,内部类可以直接访问外部类中的成员变量,内部类可以定义在外部类的方法外面,也可以定义在外部类的方法体中.在方法外部定义的内部类前面可以加上st ...
- Java并发机制(2)--synchronized与Lock
本内容整理自:博客园-海 子-java并发编程系列-http://www.cnblogs.com/dolphin0520/category/602384.html 1.基础: 1.什么时候出现线程安全 ...
- 你如何确保 main()方法所在的线程是 Java 程序最后结束 的线程?
我们可以使用 Thread 类的 join()方法来确保所有程序创建的线程在 main()方法退出前结束.
- spring-boot-learning 日志相关
sprint-boot 日志 市面上的日志框架: JUL.JCL.Jboss-logging.logback.log4j.log4j2.slf4j.... SpringBoot:底层是Spring ...