Java基础学习(三)

news/2025/1/8 11:36:05/文章来源:https://www.cnblogs.com/victoria6013/p/18659396

Java基础学习(三):流程控制

目录
  • Java基础学习(三):流程控制
    • 用户交互
      • 输出
      • 输入
    • 代码结构
      • 选择结构
      • 循环结构

本文为个人学习记录,内容学习自 狂神说Java

用户交互

输出

System.out.print();				// 最基本的输出语句
System.out.print("\n");			// 手动换行
System.out.println();			// 输出完自带换行的输出语句

小技巧:在 IntelliJ IDEA 中,直接输入 sout + Enter 即可快速生成 System.out.println();

输入

在 JDK5 引入了 java.utils.Scanner ,可以通过 Scanner 类获取用户的输入

  1. Scanner 类的 next 方法

    • 使用 next() 方法获取输入的字符串

      • 阻塞线程,若此时缓冲区中存在有效字符串,则直接取出,否则等待用户输入内容,此时输入的内容会被保存至缓冲区,直至键入回车时检查是否存在有效字符串,若存在则取出,否则继续等待用户输入,如此循环往复
      • 此处的有效字符串是以空格、制表符、换行符等分隔符进行分隔的字符串
      • 对于缓冲区中有效字符之前的空格,会自动将其从缓冲区中去除
      • 只从缓冲区中取出第一个有效字符串
      • 无法得到带有空白(空格和制表符)的字符串
      Scanner scanner = new Scanner(System.in);       // 创建Scanner对象
      System.out.println("请输入内容:");
      String str = scanner.next();                    // 使用next方法接收,该语句会阻塞线程直至输入有效字符并键入回车
      System.out.println("输入的内容为:" + str);
      scanner.close();                                // 凡是属于IO流的类,如果不关闭就会一直占用资源
      
    • 使用 nextLine() 方法获取输入的字符串

      • 阻塞线程,若此时缓冲区中存在字符串,则直接取出,否则等待用户输入内容,此时输入的内容会被保存至缓冲区,直至键入回车时从缓冲区中读取字符串
      • 可以获得带空白(空格和制表符)的字符串
      Scanner scanner = new Scanner(System.in);       // 创建Scanner对象
      System.out.println("请输入内容:");
      String str = scanner.nextLine();                // 使用nextLine方法接收,该语句会阻塞线程直至键入回车
      System.out.println("输入的内容为:" + str);
      scanner.close();                                // 凡是属于IO流的类,如果不关闭就会一直占用资源
      
    • 其他的方法,如 nextInt()、nextFloat()、nextBoolean() 和 next() 同理

    • 举个复杂点的栗子:

      Scanner scanner = new Scanner(System.in);
      System.out.println("请输入数据:");				// 输入 "	12   345 ",中间的空白为空格
      String i = scanner.next();
      String j = scanner.nextLine();
      System.out.println("输出i:"+i);				  // 输出为 "12"
      System.out.println("输出j:"+j);				  // 输出为 "   345 "
      
  2. Scanner 类的 hasNext 方法

    • 使用 hasNext() 方法判断是否有字符串

      • 阻塞线程,若此时缓冲区中存在有效字符串,则直接返回true,否则等待用户输入内容,此时输入的内容会被保存至缓冲区,直至键入回车时检查是否存在有效字符串,若存在则返回true,否则继续等待用户输入,如此循环往复
      • 仅进行判断,不会从缓冲区中取出数据
    • 使用 hasNextLine() 方法判断是否有字符串

      • 阻塞线程,若此时缓冲区中存在字符串,则直接返回true,否则等待用户输入内容,此时输入的内容会被保存至缓冲区,直至键入回车时返回true
      • 仅进行判断,不会从缓冲区中取出数据
    • 其他的方法,如 hasNextInt()、hasNextFloat()、hasNextBoolean() 和 hasNext() 同理,只有当缓冲区中存在有效字符串时才进行判断,不同点在于会根据输入数据的类型判断返回值为true还是false

      • 主要用于判断输入的数据类型
      if (scanner.hasNextInt()){						// 判断接收到的是不是int类型i = scanner.nextInt();						// 从缓冲区中取出数据System.out.println("输入为整型");
      }else {System.out.println("输入不为整型");
      }
      scanner.close();
      

代码结构

Java 代码包含了三种基本结构:顺序结构选择结构循环结构

选择结构

  1. if 单选择结构

    if (布尔表达式){// 如果布尔表达式为true执行的语句
    }
    
  2. if 双选择结构

    if (布尔表达式){// 如果布尔表达式为true执行的语句
    }else{// 如果布尔表达式为false执行的语句
    }
    
  3. if 多选择结构

    if (布尔表达式1){// 如果布尔表达式1为true执行的语句
    }else if (布尔表达式2){// 如果布尔表达式2为true执行的语句
    }else if (布尔表达式3){// 如果布尔表达式3为true执行的语句
    }else{// 如果以上布尔表达都不为true执行的语句
    }
    
  4. switch 多选择结构

    switch语句中的变量类型可以是:

    • byte、short、int 或者 char
    • 从 JDK7 开始支持 String 了
    switch (表达式){case 值1 :// 语句1break;  	// 可选case 值2 :// 语句2break;  	// 可选default:    	// 可选// 语句3
    }
    

​ 注意:① break 用于退出 switch-case 语句,没有 break 的话会顺序执行后续语句直至 break ② 当不满足所有case时,执行default

循环结构

  1. while 循环

    while (布尔表达式) {// 循环语句
    }
    
  2. do-while 循环

    do {// 循环语句
    }while (布尔表达式);
    
  3. for 循环

    for (初始化; 布尔表达式; 更新) {// 循环语句
    }
    

    注意:for 循环中“初始化”、“布尔表达式”、“更新”三部分都可以省略,如果省略了布尔表达式将会变成死循环

  4. (JDK5 新增)增强型 for 循环

    for (声明语句: 表达式){// 循环语句
    }
    

    增强型 for 循环主要用于数组或集合,一个简单的遍历数组元素的应用如下:

    int[] numbers = {10, 20, 30};		// 数组的定义
    for (int x: numbers){				// 遍历数组元素System.out.println(x);
    }
    
  5. 循环中的关键字:break continue goto

    • break : 在循环中使用时,用于结束整个循环
    • continue : 用于结束当次循环,直接进行下一次的循环
    • goto : 尽管 goto 并没有在 Java 中得到正式应用,但仍然保留了这一关键字,不建议使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/865813.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uniapp 荣耀手机 没有检测到设备 运行到Android手机 真机运行

背景: 使用uniapp框架搭建的项目,开发的时候在浏览器运行,因为项目要打包成App,所以需要真机联调,需要运行到Android手机,在手机上查看/运行项目。通过真机调试才能确保软件开发的准确性和页面显示的完整性。操作步骤:1.Usb连接手机和电脑,电脑上的HbuilderX打开项目;…

DC-5 靶场通关小记

rustscan端口扫描指纹识别、LFI漏洞+文件包含(nginx日志)GetShell、screen-4.5.0提权地址 https://www.vulnhub.com/entry/dc-5,314/环境配置 有兼容性问题参考 https://www.cnblogs.com/lrui1/p/18655388 信息收集 ./rustscan -a 192.168.74.130 -- -A -sC Open 192.168.74.13…

ABB IRB5500喷涂机械手维修细节查看

ABB IRB5500喷涂机器人的控制柜常见故障表现形式主要包括以下几种:1、控制柜不能启动:可能原因包括电源故障、控制电路板损坏、保险丝烧断等。处理方法包括检查电源是否正常、控制电路板是否有损坏迹象、保险丝是否烧断等。 2、abb涂装机械手控制柜报错或异常:可能原因包括…

新年新机遇:跨境电商选品策略大揭秘

跨境电商在进行新年选品时,需要综合考虑市场调研、竞争对手分析、品牌选择、价格定位、物流考虑、汇率研究、多元化产品线以及节日和特殊事件等多个因素。通过精心策划和准备,可以确保所选产品在新年期间取得良好的销售业绩。在进行跨境电商新年选品时,需要考虑多个因素以确…

年度重磅 |《2024华为开发者宝典》免费下载,多维度解读华为根生态技术

摘要:20多位华为云DTSE专家打造,10+技术领域全覆盖,图文干货+视频讲解,多维度解读华为根生态技术,拥抱技术变革,开启创新之旅。 一年一度!大家最期待的华为开发者宝典新鲜出炉!在刚刚过去的2024年,华为云开发者联盟通过25场精彩的DTSE Tech Talk直播活动,为广大开发者…

WPF页面中将一个控件的宽度绑定到其父级用户控件的实际宽度

通常情况下,使用相对宽度(如 * 星号单位)和适当的 HorizontalAlignment 是最简单有效的方法,可以确保子控件随着父控件的大小变化而自动调整。如果需要更精确的控制,可以考虑使用 RelativeSource 绑定或其他高级技术。确保父容器也支持子控件的动态尺寸调整非常重要。该实…

Windows 系统下 Docker 和 Docker Compose 安装配置:一键部署有来开源项目本地环境

在 Windows 系统上安装 Docker 和 Docker Compose,实现一键部署有来开源项目的本地环境,包括单体应用和微服务架构。🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🍃 vue-uniapp-template 🌺 仓库主页: GitCod…

Openfiler iscsi共享存储连接访问配置

Openfiler、iscsi案例说明: 通过openfiler虚拟机模拟iscsi server建立存储共享,测试多路径(multipath)配置。 测试架构:iscsi server网络配置:一、通过firefox浏览器访问openfiler服务配置 1、连接服务配置失败2、修改TLS认证级别3、连接访问openfiler配置服务二、配置op…

SQL Server数据库备份、差异备份、日志备份脚本.250108

1,sp脚本 USE [master] GO /****** Object: StoredProcedure [dbo].[sp_BackupDatabase] Script Date: 2025/1/8 10:43:05 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO-- Author: Amadeus-- Create date: 2021-10-20 exec sp_BackupDatabase L-- Descrip…

JuiceFS 2024:开源与商业并进,迈向 AI 原生时代

即将过去的 2024 年,是 JuiceFS 开源版本推出的第 4 年,企业版的第 8 个年头。回顾过去这一年,JuiceFS 社区版依旧保持着快速成长的势头,GitHub 星标突破 11.1K,各项使用指标增长均超过 100%,其中文件系统总数量较前一年更是增长了 8.5 倍;企业版同样持续保持高速增长,…

智慧防洪平台:构建城市安全的数字防线

随着全球气候变化的加剧和城市化进程的加快,城市防洪问题日益凸显。智慧防洪平台作为智慧城市建设的重要组成部分,其核心目标是通过集成先进的信息技术和数据分析,实现对城市洪涝灾害的有效预防和应对。本文将深入探讨智慧防洪平台的建设内容,以期为城市安全提供强有力的数…

如何通过数据分析优化电商营销策略和客户体验

一、电商数据的收集 电商平台的数据来源多样,包括用户行为数据、交易数据、客户反馈数据、商品信息数据等。高效的数据收集不仅是数据分析的前提,也是实现精准决策的基础。 1.1 数据收集的主要来源 用户行为数据:用户在电商平台上的每一次点击、浏览、搜索、加入购物车、下单…