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码是美国提出的标准信息 ...
随机推荐
- 提升Spring Boot项目中API接口并发能力的一个注解,效果明显
异步调用几乎是处理高并发Web应用性能问题的万金油,那么什么是"异步调用"?"异步调用"对应的是"同步调用",同步调用指程序按照定义顺序依次 ...
- ElasticSearch7.3 学习之定制分词器(Analyzer)
1.默认的分词器 关于分词器,前面的博客已经有介绍了,链接:ElasticSearch7.3 学习之倒排索引揭秘及初识分词器(Analyzer).这里就只介绍默认的分词器standard analyz ...
- ASP.NET Core 6框架揭秘实例演示[28]:自定义一个服务器
作为ASP.NET Core请求处理管道的"龙头"的服务器负责监听和接收请求并最终完成对请求的响应.它将原始的请求上下文描述为相应的特性(Feature),并以此将HttpCont ...
- MySQL — 数据查询语言
目录 1.基础查询 2.条件查询 3.分组查询 4.排序查询 5.分页查询 6.多表查询 6.1.连接查询 6.1.1.内连接 6.1.2.外连接 6.1.3.自连接 6.1.4.联合查询 6.2.子 ...
- async-validator 源码学习笔记(五):Schema
系列文章: 1.async-validator 源码学习(一):文档翻译 2.async-validator 源码学习笔记(二):目录结构 3.async-validator 源码学习笔记(三):ru ...
- STL基本用法的一些记录
迭代器 (set类型)::iterator 就是迭代器 迭代器可以看成stl容器内元素的指针 set 默认从小到大排序 begin() set中最小的元素的迭代器 end() set中最大的元素的迭代 ...
- Java 中计算注意!!!
* 使用BigDecimal需要注意的事项: * 1.两个BigDecimal值不能使用" +, -, *, / " 进行加减乘除,要使用" add, substrac ...
- react单向数据流怎么理解?
React是单向数据流,数据主要从父节点传递到子节点(通过props).如果顶层(父级)的某个props改变了,React会重渲染所有的子节点.
- 【Java面试宝典】说说你对 Spring 的理解,非单例注入的原理?它的生命周期?循环注入的原理, aop 的实现原理,说说 aop 中的几个术语,它们是怎么相互工作的?
AOP与IOC的概念(即spring的核心) IOC:Spring是开源框架,使用框架可以使我们减少工作量,提高工作效率并且它是分层结构,即相对应的层处理对应的业务逻辑,减少代码的耦合度.而sprin ...
- Oracle入门基础(九)一一创建表和管理表
练习:查询每一年入职人数及总人数 SQL> select count(*) Total, 2 sum(decode(to_char(hiredate,'yyyy'),'1980',1,0)) & ...