巩固Java流程控制的学习。。。

一、用户交互Scanner

通过Scanner类获取用户的输入

  1. import java.util.Scanner;
  2. public class Demo1 {
  3. public static void main(String[] args) {
  4. //创建一个扫描对象,用于接收键盘数据
  5. Scanner sc = new Scanner(System.in); //hello world
  6. System.out.println("使用next方式接收:");
  7. //判断用户有没有字符串输入
  8. if (sc.hasNext()){
  9. //用next方式接收
  10. String s = sc.next(); //hello
  11. System.out.println("输出内容为:"+s);
  12. }
  13. sc.close(); //凡是属于IO流的类如果不关掉就一直会占用资源
  14. }
  15. }
  1. import java.util.Scanner;
  2. public class Demo2 {
  3. public static void main(String[] args) {
  4. //创建一个扫描对象,用于接收键盘数据
  5. Scanner sc = new Scanner(System.in); //hello world
  6. System.out.println("使用nextLine方式接收:");
  7. //判断用户有没有字符串输入
  8. if (sc.hasNext()){
  9. //用next方式接收
  10. String s = sc.nextLine(); //hello world
  11. System.out.println("输出内容为:"+s);
  12. }
  13. sc.close(); //凡是属于IO流的类如果不关掉就一直会占用资源
  14. }
  15. }

对于next()和nextLine():后者更常用

  • next()

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

小案例:输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并执行结果。

  1. import java.util.Scanner;
  2. public class Demo3 {
  3. public static void main(String[] args) {
  4. Scanner scanner = new Scanner(System.in);
  5. //和
  6. double sum = 0.0;
  7. //计算输入了多少个数字
  8. int n = 0;
  9. //通过循环判断是否还有输入,并在里面对每一次进行求和统计
  10. while (scanner.hasNextDouble()) {
  11. double x = scanner.nextDouble();
  12. n++;
  13. sum = sum+x;
  14. }
  15. System.out.println(n+"个数的和为:"+sum);
  16. System.out.println(n+"个数的平均值为:"+(sum/n));
  17. scanner.close();
  18. }
  19. }

二、顺序结构

按顺序一句一句执行,自上而下

三、选择结构

1、if单选择结构

  1. if(布尔表达式) {
  2. //如果布尔表达式为true将执行的语句
  3. }

2、if双选择结构

  1. if(布尔表达式) {
  2. //如果布尔表达式为true将执行的语句
  3. }else {
  4. //如果布尔表达式为false将执行的语句
  5. }

3、if多选择结构

  1. if(布尔表达式 1) {
  2. //如果布尔表达式 1的值为true将执行的语句
  3. }else if(布尔表达式 2) {
  4. //如果布尔表达式 2的值为false将执行的语句
  5. }else if(布尔表达式 3) {
  6. //如果布尔表达式 3的值为false将执行的语句
  7. }else {
  8. //如果以上布尔表达式都不为true将执行的语句
  9. }

4、if嵌套结构

  1. if(布尔表达式 1) {
  2. //如果布尔表达式 1的值为true执行的语句
  3. if(布尔表达式 2) {
  4. //如果布尔表达式 2的值为true执行的语句
  5. }
  6. }

5、switch选择结构

  1. switch(expression) {
  2. case value:
  3. //语句
  4. break; //可选
  5. case value:
  6. //语句
  7. break; //可选
  8. //任意数量case语句
  9. default: //可选
  10. //语句
  11. }

case具有穿透能力,switch的优势在于:可以匹配一个具体的值

  1. //理解case的穿透力
  2. public class Demo5 {
  3. public static void main(String[] args) {
  4. char grade = 'C';
  5. switch (grade) {
  6. case 'A':
  7. System.out.println("满分");
  8. case 'B':
  9. System.out.println("优秀");
  10. case 'C':
  11. System.out.println("及格");
  12. case 'D':
  13. System.out.println("不及格");
  14. default:
  15. System.out.println("未知");
  16. }
  17. }
  18. }
  19. //及格
  20. //不及格
  21. //未知

通过输出结果发现,case后的结果全部输出,为了避免该种现象,我们只需加上break

注意:jdk7后,switch支持字符串String类型

  1. public class SwitchDemo {
  2. public static void main(String[] args) {
  3. //须知:字符的本质还是数字
  4. //反编译即可发现
  5. String fruit = "大西瓜";
  6. switch (fruit) {
  7. case "大西瓜":
  8. System.out.println("大西瓜");
  9. break;
  10. case "草莓":
  11. System.out.println("草莓");
  12. break;
  13. case "菠萝":
  14. System.out.println("菠萝");
  15. break;
  16. default:
  17. System.out.println("哈密瓜");
  18. }
  19. }
  20. }

反编译一下:

四、循环结构

1、while循环

  1. while(布尔表达式) {
  2. //循环内容
  3. }

大多数情况下需要一个表达式失效的方式来结束循环

2、dowhile循环

  1. do {
  2. //代码语句
  3. }while(布尔表达式)

while和do...while的区别

  • do...while循环至少会执行一次
  • while先判断后执行,do...while先执行后判断

3、for循环

  1. for(初始化;布尔表达式;更新) {
  2. //代码语句
  3. }

最有效、最灵活的循环结构!

关于计算1+2+...+100=?的不同解法:

  1. public class WhileDemo {
  2. public static void main(String[] args) {
  3. int i = 0;
  4. int sum = 0;
  5. while (i<=100) {
  6. sum = sum+i;
  7. i++;
  8. }
  9. System.out.println(sum);
  10. }
  11. }
  1. public class DoWhileDemo {
  2. public static void main(String[] args) {
  3. int i = 0;
  4. int sum = 0;
  5. do {
  6. sum = sum+i;
  7. i++;
  8. }while (i<=100);
  9. System.out.println(sum);
  10. }
  11. }
  1. public class ForDemo {
  2. public static void main(String[] args) {
  3. int sum = 0;
  4. for (int i = 0; i <= 100; i++) {
  5. sum = sum+i;
  6. }
  7. System.out.println(sum);
  8. }
  9. }

4、增强for循环

  1. for(声明语句:表达式) {
  2. //代码语句
  3. }

遍历用法:

  1. public class EnhanceFor {
  2. public static void main(String[] args) {
  3. int[] arr = {1,2,3,4,5};
  4. //普通for
  5. for (int i = 0; i < 5; i++) {
  6. System.out.println(arr[i]);
  7. }
  8. System.out.println("=====================");
  9. //增强for
  10. for (int x:arr
  11. ) {
  12. System.out.println(x);
  13. }
  14. }
  15. }

5、break与continue

break用于强行退出循环

continue用于终止某次循环

疯狂Java基础Day2的更多相关文章

  1. java基础-day2

    第02天 java基础知识 今日内容介绍 u Eclipse的安装.配置及使用 u 运算符 u 键盘录入 第1章   Eclipse开发工具 1.1  Eclipse概述和安装 Eclipse是一个I ...

  2. 疯狂Java基础Day1

    --每过一遍基础,都是一次提升! 太多遗忘了,慢慢补... 推一个Java学习教程--->b站搜:狂神说Java系列(排序完毕) 推荐原因:讲的不错,会涉及到底层,也会讲讲面试. 一.注释 主要 ...

  3. java基础day2

    Java标识符命名规则: 标识符由字母,下划线“_”.美元符号$或数字组成/ 不能以数字开头 区分大小写 不能是关键字 “ 见名知意” 约定俗成的规则 类名:首字母大写变量名:除第一个单词外小写,其他 ...

  4. udp协议基础(转自疯狂java讲义)

    第17章  网络编程 17.4  基于UDP协议的网络编程 UDP协议是一种不可靠的网络协议,它在通信实例的两端各建立一个Socket,但这两个Socket之间并没有虚拟链路,这两个Socket只是发 ...

  5. Java基础进阶整理

    Java学习笔记整理 本文档是我个人整理的,首先是想通过完成本文档更加扎实自己的基础加强对java语言的理解,然后就是想给入了门的同志们做下贡献. 当然,本文档主要是对java语言基础(当然还有很多基 ...

  6. 《疯狂Java讲义》(一) ---- 关于学习Java的反思

    "听到Spring很火,就立马买来一本Spring的书来读,最后结果往往是失败,因为这种学习没有积累,没有根基,学习过程中困难重重,每天都被一些相同.类似的问题所困扰,起初热情十足,经常上论 ...

  7. 《疯狂java讲义》笔记 1-5章

    1.编译语言和解释语言理解,摘自李刚老师的<疯狂Java讲义>第三版: 就是说,Java和.net都是编译型有事解释型语言.编译型就是根据不同平台编译成不同的可执行机器码,编译过程中会进行 ...

  8. 《疯狂java讲义》读后感

    <疯狂java讲义·第三版>,全书共851页,18章. 目录如下: 第1章 Java语言概述与开发环境 第2章 理解面向对象 第3章 数据类型和运算符 第4章 流程控制与数组 第5章 面向 ...

  9. 如何学习java?Java基础知识点分享

    面对未知的行业,人们的第一反应应该是:拒绝踏入.因为学习真的是一个痛苦的过程.想要真正了解一个行业,熟知一个行业,并熟练掌握某一技术,是真的需要时间和精力的.在学习Java基础知识期间,千锋小编疯狂为 ...

随机推荐

  1. Android使用百度语音识别api代码实现。

    第一步 ① 创建平台应用 点击百度智能云进入,没有账号的可以先注册账号,这里默认都有账号了,然后登录. 然后左侧导航栏点击找到语音技术 然后会进入一个应用总览页面, 然后点击创建应用 立即创建 点击查 ...

  2. Java比较两个浮点数

    浮点数的基本数据类型不能用==比较,包装数据类型不能用 equals 比较 浮点数的表示 在计算机系统中,浮点数采用 符号+阶码+尾数 进行表示.在Java中,单精度浮点数float类型占32位,它的 ...

  3. Android Studio找不到设备,解决adb占用问题的方法

    使用as连接真机时,找不到设备,发现 D:\Android\Sdk\platform-tools\adb.exe start-server' failed -- run manually if nec ...

  4. Python树莓派 爬虫心得

    平台: 树莓派 linux 语言:python 搞一个爬虫都清楚是怎么回事,我这里玩过之后有下面的心得: 为什么要用树莓派呢,省电啊,没乱七八糟的桌面问题,可以一直开着. 1.树莓派上的磁盘写入对于不 ...

  5. 本地文件名大写,提交到git仓库后变成了小写

    输入改命令即可: git config core.ignorecase false

  6. ecshop调用商品的购买次数方法

    这时候我们修改一下 写成一个函数放到lib_goods.php 这样就可以随便调用了 --------------------------------------------------------- ...

  7. Shell系列(7)- 通配符

    通配符 通配符 作用 ? 匹配一个任意字符 * 匹配0个或任意多个任意字符,也就是可以匹配任何内容 [] 匹配中括号中任意一个字符.例如:[abc]代表一定匹配一个字符,或者是a,或者是b,或者是c. ...

  8. uni-app跨平台框架介绍和快速入门

    前言: 首先今天主要介绍的是一个多平台的前端框架uni-app,关于多平台的前端框架网上有很多成熟的解决方案比如说Taro,React Native,Flutter等这些都是一些非常优秀的前端跨平台的 ...

  9. Matlab使用随记

    Matlab 2020 想要看图像每一点的值大小 工具--->数据提示 想要导出的分辨率提高 导出设置--->渲染--->600dpi Matlab 2017b 程序运行后,画出图, ...

  10. display:flex;下的子元素width无效问题

    因为flex属性默认值为flex:0 1 auto;其中 1 为 flex中的 flex-shrink 属性. 该属性介绍: 一个数字,规定项目将相对于其他灵活的项目进行收缩的量. 根据上述介绍可以理 ...