流程控制

用户交互Scanner

  • 之前学得基本语法中并没有实现程序和人交互的场景,但是Java给我们提供了一个工具类,我们可以通过它来获取用户的输入,它就是Scanner。

    使用它时,需要导入java.util.Scanner,我们通过Scanner类来获取用户的输入。

  • 基本语法:

     Scanner s = new Scanner(System.in);
  • 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取之前我们一般需要用hasNext()和hasNextLine()方法来判断是否还有输入的数据。

案例


import java.util.Scanner; public class Demo02 {
public static void main(String[] args) {
// 创建一个Scanner对象,用来接收键盘输入
Scanner scanner = new Scanner(System.in); // 提示用户输入一个数字
System.out.println("请输入一句话:"); // 判断用户有没有输入字符
if (scanner.hasNext()){
String str = scanner.next();
System.out.println("输入的内容为:" + str);
}
// 关闭Scanner对象,释放资源
scanner.close();
}
}

  • next():

    • 一定要读取到有效字符后才可以结束输入。
    • 对输入有效字符之前遇到的空白,next()方法会自动将其去掉。
    • 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
    • next()不能得到带有空格的字符串
  • nextLine():

    • 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符。
    • 可以获得空白。

顺序结构

  • Java的基本结构就是顺序结构,除非特别指明,否则就是按照顺序一句一句执行。
  • 顺序结构是最简单的算法结构。

  • 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构

选择结构

if单选择结构

  • 很多时候我们需要去判断一个东西是否可行,然后我们才去执行,这样一个过程在程序中用if语句就可以表示。
  • 语法
    if(布尔表达式){
    // 如果布尔表达式为true将执行的语句
    表达语句;
    }

if双选择结构

  • 现在有个需求,公司要收购一个软件,成功了给人支付100万元,失败了自己找人开发。这样的需求,用一个if就搞定不了了,我们需要两个判断,需要一个双选择结构,所以就有了if-else结构。
  • 语法
      if(布尔表达式){
    // 如果布尔表达式为true
    表达语句;
    }
    else{
    // 如果布尔表达式的值为false
    表达语句;
    }

if多选择结构

  • 当我们发现选择的情况还有可能是ABCD,存在很多判断时,if、if-else选择结构就不符了。比如学生的成绩90100分就是A,8090分就是B,60~80分就是C,低于60分就是D。这时候我们就需要一个多选择结构来处理类似的问题。
  • 语法
      if(布尔表达式1){
    // 如果布尔表达式1的值是true执行代码
    表达语句;
    }
    else if(布尔表达式2){
    // 如果布尔表达式2的值是true执行代码
    表达语句;
    }
    else if(布尔表达式3){
    // 如果布尔表达式3的值是true执行代码
    表达语句;
    }
    else{
    // 如果以上布尔表达式的值是false执行代码
    表达语句;
    }

案例

    import java.util.Scanner;

public class Demo02 {
public static void main(String[] args) {
// 考试分数大于60就是及格,小于60分就是不及格。
Scanner scanner = new Scanner(System.in);
int score = 0; System.out.println("请输入你的成绩:60");
score = scanner.nextInt(); if(score >= 90 && score <= 100){
System.out.println("A");
}
else if(score >= 80 && score < 90){
System.out.println("B");
}
else if (score >= 70 && score < 80){
System.out.println("C");
}
else if(score >= 60 && score < 70){
System.out.println("D");
}
else{
System.out.println("不及格");
} scanner.close();
}

嵌套的if结构

  • 使用嵌套的if...else语句是合法的。也就是说你可以在另一个if或者else if语句中使用if或者else if语句。你可以像if语句一样嵌套else if...else。
  • 语法
      if(布尔表达式1){
// 如果布尔表达式1的值为ture执行代码
表达语句;
if(布尔表达式2){
//如果布尔表达式2的值为true执行代码
表达语句;
}
}

switch多选择结构

  • 多选择结构还有一个实现方式就是switch case语句。
  • switch case语句判断一个变量与一系列值中某个值是否相等,每一个值称为一个分支。
  • switch语句中的变量类型可以是:
    • byte、short、int或者char。
    • 从Java SE7开始,Switch支持字符串String类型了
    • 同时,case标签必须为字符串常量或者字面量。

循环结构

while循环

  • while是最近本的循环,他的结构是:
while(布尔表达式){
// 循环体内容
语句;
}
  • 只要布尔表达式为true,循环就会一直执行下去。
  • 我们大多数情况是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环
  • 少部分情况需要循环一直执行,比如服务器的请求响应监听等。
  • 循环条件一直为true就会造成无限循环(死循环),我们正常的正常的业务编辑中应尽量避免出现死循环。这会影响程序性能或者造成程序卡死崩溃。

do...while循环结构

  • 对于while语句而言,如果不满足条件,则不能进入循环。但是有时候我们需要即使不满足条件,也至少执行一次。
  • do...while循环和while循环相似,不同的是,do...while循环至少会执行一次。
do{
代码语句;
}while(布尔表达式);
  • while和do-while的区别:

    • while先判断后执行,do-while是先执行后判断。
    • do-while总是保证循环体会被执行一次,这是他们的主要差别。

for循环

  • 虽然所有循环结构都可以用while或者do...while表示,但Java提供了另一种语句——for循环,使一些循环结构变得更加简单。
  • for循环语句是支持迭代的一种通用结构,石最有效、最灵活的循环结构。
  • for循环执行的次数是在执行前就确定的。语法格式如下:
  for(初始化;布尔表达式;迭代){
// 代码语句
循环语句;
}

案例

  • 计算0~100之间的奇数和偶数的和
public class ForDemo01 {
public static void main(String[] args) {
// 计算0~100之间的奇数和偶数的和
int sum = 0; for(int i = 0; i <= 100; i++){
// 偶数
if(i % 2 == 0){
sum += i;
}
}
System.out.println("0~100之间的偶数和为:" + sum); sum = 0;
for(int i = 0; i <= 100;i++){
// 奇数
if(i % 2 == 1){
sum += i;
}
}
System.out.println("0~100之间的奇数和为:" + sum);
}
}
  • 打印九九乘法表
public class ForDemo02 {
public static void main(String[] args) {
// 九九乘法表
for(int i = 1; i <= 9; i++){
for(int j = 1; j <= i; j++){
System.out.print(j + "*" + i + "=" + (i*j) + "\t");
}
System.out.println();
}
}
}

增强For循环

  • Java5引入了一种主要用于数组或者集合的增强型for循环。
  • Java增强型for循环语法格式如下:
  for(声明语句: 表达式){
// 代码句子
}
  • 声明语句: 声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
  • 表达式: 表达式是要访问的数组名,或者是返回值为数组的方法。
  public class ForDemo01 {
public static void main(String[] args) {
// 定义数组
int[] numbers = {10, 20, 30, 40, 50}; //遍历数组
for(int x : numbers){
System.out.println(x);
}
}
}

循环中用到的关键字

break、continue

  • break在任何循环语句的主体部分,均可以用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)
  • continue语句用在循环语句体中,用于终止某次循环的过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。

关于goto关键字

  • goto关键字很早就在程序设计语言中出现。尽管goto仍是Java的一个保留字,但并未在语言中得到正式使用。Java没有goto,然而在break和continue这两个关键字的身上我们依然能够看出一些goto的影子——带标签的break和continue。
  • "标签"是指后面跟一个冒号的标识符,例如:“label:”
  • 对Java来说唯一用到标签的地方是在循环语句之前。而在循环之前设置标签的唯一理由就是:我们西方在其中嵌套另一个循环,由于break和continue关键字通常只中断当前循环,但若随同标签使用,它们就会中断到存在标签的地方。

案例:打印101~150之间的所有质数

public class LableDemo {
public static void main(String[] args) {
// 打印101~150之间的所有质数
// 质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
int count = 0; outer:for(int i = 101; i < 150; i++){
for(int j = 2; j < i / 2; j++){
if(i % j == 0){
continue outer;
}
}
System.out.print(i + " ");
}
}
} 输出结果:101 103 107 109 113 127 131 137 139 149

案例:打印一个等腰三角形

public class Test01 {
public static void main(String[] args) { for(int i = 1; i <= 5; i++){
for(int j = 5; j >=i ; j--){
System.out.print(" ");
}
for(int j = 1; j <= i; j++){
System.out.print("*");
}
for(int j = 1; j < i; j++){
System.out.print("*");
}
System.out.println();
}
}
} 输出结果:
*
***
*****
*******
*********

05Java基础语法之流程控制的更多相关文章

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

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

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

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

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

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

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

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

  5. JavaSE基础语法学习-流程控制

    流程控制 用户交互Scanner Scanner**对象** 下面是创建 Scanner 对象的基本语法: Scanner s = new Scanner(System.in); 接下来我们演示一个最 ...

  6. python基础语法2 流程控制 if,while,for

    if语句: 什么是if? 主要是用于判断事物得对错,真假,是否可行 语法结构: python是通过缩进来决定代码的归属 pep8: 缩进一定是四个空格 tab键 if 条件: 代码块 .... ... ...

  7. 【Java基础】基本语法-程序流程控制

    基本语法-程序流程控制 程序流程控制 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块. 其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即: 顺 ...

  8. 基础语法-其它流程控制语句break和continue

    基础语法-其它流程控制语句break和continue 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.break语句 /** * break语句 * @author 尹正杰 * ...

  9. PHP丨PHP基础知识之流程控制WHILE循环「理论篇」

    昨天讲完FOR循环今天来讲讲他的兄弟WHILE循环!进入正题: while是计算机的一种基本循环模式.当满足条件时进入循环,进入循环后,当条件不满足时,跳出循环.while语句的一般表达式为:whil ...

  10. PHP基础知识之流程控制的替代语法

    PHP 提供了一些流程控制的替代语法,包括 if,while,for,foreach 和 switch. 替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成 endif;,e ...

随机推荐

  1. 操作系统综合题之“用记录型信号量机制的wait和signal操作来解决了由北向南和由南向北过河人的同步问题(独木桥问题-代码补充)”

    1.问题:一条哦东西走向河流上,有一根南北走向的独木桥,要想过河只能通过这根独木桥.只要人们朝着相同的方向过独木桥,同一时刻允许有多个人可以通过.如果在相反的方向上同时有两个人过独木桥则会发生死锁.如 ...

  2. css_初阶

    s10.html <!DOCTYPE html> <html lang="en"> <head>     <meta charset=&q ...

  3. 夸克浏览器PC端功能体验

    一.下载安装 可以看到目前PC端仅仅支持windows,不支持Mac和Linux. 二.功能介绍 夸克浏览器果然很简洁.清新,左侧栏提供首页.网盘.工具.快传四个选项,中间是搜索栏,底部是可定制的天气 ...

  4. .NET中使用CommonOpenFileDialog【打开文件夹】

    install-package WindowsAPICodePack var folderDialog = new CommonOpenFileDialog() { Title = "xxx ...

  5. 赛前十天——打印输入字符串的全排列&&cls(java实现)

    package javaPractice; import java.util.Scanner; public class Contest13 { public static void main(Str ...

  6. Hitachi Vantara Programming Contest 2024(AtCoder Beginner Contest 368)题解A~D

    A - Cut 题意: 将数组的后k个字符移到前面 思路: 可以用rotate()函数让数组中的元素滚动旋转 rotate(v.begin(), v.begin() + n - k, v.end()) ...

  7. MVVM - Model和ViewModel的创建和配置

    MVVM-Model和ViewModel的创建和配置 本文同时为b站WPF课程的笔记,相关示例代码 简介 MVVM:Model-View-ViewModel,是一种软件架构的模式.通过引入一个中间层V ...

  8. IPMI新建BMC管理用户

    # 查看ipmi的ip [root@HOST-10-198-2-62 ~]# ipmitool lan print # 首先确认非admin用户的id,选择一个ID创建root用户 [root@HOS ...

  9. OceanBase 中的非机动车道 —— SQL 限流技巧分享

    首先为大家推荐这个 OceanBase 开源负责人老纪的公众号 "老纪的技术唠嗑局",会持续更新和 OceanBase 相关的各种技术内容.欢迎感兴趣的朋友们关注! 定场诗< ...

  10. C#如何取出非公共成员

    https://blog.csdn.net/yueguangzhiyuan/article/details/8926131 一般而言,非公共成员是受保护的,不能被外部访问的,这些都是基于安全性考虑.可 ...