Java基础语法02——流程控制

流程控制:顺序结构、分支结构(if-else、switch-case)、循环结构(for、while、do-while)

  • 实现从键盘获取不同类型的变量——Scanner类

    步骤:

    1. 导包:import java.util.Scanner;

    2. Scanner实例化:Scanner scan = new Scanner(System.in);

    3. 调用Scanner的相关方法,来获取指定类型的变量:格式:Scanner.方法

      String类型——next()

      int类型——nextInt()

      double类型——nextDouble()

分支结构1——if-else结构

三种形式:

  1. /*
    if(条件表达式){
    执行语句;
    }
    */
  2. /*
    if(条件表达式){
    执行语句1;
    }else{
    执行语句2;
    }
    */
  3. /*
    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:
执行语句;
*/
  1. 过程:将switch表达式的值与case常量的值匹配,匹配成功,执行相应case下的语句;执行后继续向下执行case其他执行语句,直至遇到break关键字或结构末尾结束。
  2. break关键字:可用在switch-case结构中,(可选的)遇到此关键字,跳出结构
  3. switch后表达式只能是如下六种类型:byte、short、int、char、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)
  4. 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

  • 说明:

    1. 内层循环执行一遍,相当于外层循环执行一次
    2. 假设外层循环需要执行m次,内层循环需要执行n次。此时,内层循环的循环体一共执行了m*n次
    3. 技巧:外层循环控制行数,内层控制列数
//应用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——流程控制的更多相关文章

  1. Java基础语法(4)-流程控制

    title: Java基础语法(4)-流程控制 blog: CSDN data: Java学习路线及视频 1.程序流程控制 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定 ...

  2. Java基础语法与流程控制

    Java基础语法与流程控制 跟着狂神学Java的第二天O(∩_∩)O~,养成一个总结的习惯 志同道合的小伙伴可以一起学习狂神的视频 本节地址:https://www.kuangstudy.com/co ...

  3. Unit04: JavaScript 概述 、 JavaScript 基础语法 、 流程控制

    Unit04: JavaScript 概述 . JavaScript 基础语法 . 流程控制 my.js function f3() { alert("唐胜伟"); } demo1 ...

  4. 020 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 14 变量与常量 知识总结

    020 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 14 变量与常量 知识总结 本文知识点:变量与常量 知识总结 Java中的标识符 Java中的关键字 目前常 ...

  5. 019 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 13 数据类型转换的代码示例

    019 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 13 数据类型转换的代码示例 本文知识点:Java中的数据类型转换案例 学习视频有误,导致没法写文,文章内容 ...

  6. 018 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 12 数据类型转换的基本概念

    018 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 12 数据类型转换的基本概念 本文知识点:Java中的数据类型转换 类型转换 类型转换分类 2类,分别是: ...

  7. 017 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 11 变量综合案例

    017 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 11 变量综合案例 本文知识点:变量 相同类型的变量可以一次同时定义多个 例:可以一行代码同时定义2个变量x ...

  8. 016 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 10 布尔类型和字符串的字面值

    016 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 10 布尔类型和字符串的字面值 本文知识点:字面值 关于字面值的概念,需要注意:很多地方,我们可能就把字面值 ...

  9. 015 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 09 Unicode编码

    015 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 09 Unicode编码 本文知识点:Unicode编码以及字符如何表示? ASCII码是美国提出的标准信息 ...

随机推荐

  1. LGP7890题解

    前置芝士的光速幂技巧. 本题解不是正解,和正解唯一的差别在于对幂的处理. 我们能够发现有: \[F(n,m,k)=\frac 1 n \binom {n+m-1} m \] 证明见这里. 然后我们开始 ...

  2. javascript、css3曲线运动示例记录

    想做一个加入购物车的曲线动效,网上找到两个demo,分别是js和css3实现的. js:https://www.cnblogs.com/wangmeijian/p/5824176.html jquer ...

  3. instanceOf与父子类型转换

    instanceOf 只要有父子类关系,sout(A instanceOf B)结果就位ture,反之false 先前定义 class Person ; method calss Father ; m ...

  4. 使用Resource文件实现应用程序多语言

    写在前面: 1.创建资源文件 资源文件命名规则为:文件名(自定义)+cultrueInfo.Name+.resx后缀名 如:A.en-US.resx A.zh-CN.resx 这样命名应用程序代码会根 ...

  5. ldap常用命令

    单独查询用户信息 ldapsearch -D "cn=admin,dc=hrbeu,dc=edu,dc=cn" -b "ou=hbr,dc=hrbeu,dc=edu,dc ...

  6. Flink不止于计算,存算一体才是未来

    ​ "伴随着实时化浪潮的发展和深化,Flink 已逐步演进为实时流处理的领军技术和事实标准.Flink 一方面持续优化其流计算核心能力,不断提高整个行业的流计算处理标准,另一方面沿着流批一体 ...

  7. 【bjdctf】 BJD hamburger competition

    是一个游戏 静态分析和动态分析都没思路 尝试查看运行时动态链接库 其中assembly-csharp.dll可能为实现游戏功能的动态链接库 .net逆向 Dnspy反编译 关键代码如上 Getflag ...

  8. CyclicBarrier和CountDownLatch区别

    这两天写多线程时,用到了CyclicBarrier,下意识的认为CyclicBarrier和CountDownLatch作用很像,就翻阅资料查了一下,说一下他们的区别吧 CyclicBarrier和C ...

  9. 什么叫 CC 攻击?什么叫 DDOS 攻击?

    CC 攻击,主要是用来攻击页面的,模拟多个用户不停的对你的页面进行访问,从而使你的系统资源消耗殆尽.DDOS 攻击,中文名叫分布式拒绝服务攻击,指借助服务器技术将多个计算机联合起来作为攻击平台,来对一 ...

  10. @Bean和@Componet区别

    无意在两个类上看到了这两个注解,一个使用了@Bean配合@Configuration,一个使用了@Componet.依稀记得这两个注解都是实现以前在xml中<bean xxx/>的功能,但 ...