java 流程控制篇 2021/02/26持续更新中

1. 用户交互Scanner

1.1 简单的Scanner用法

  • 首先,需要 import java.util.Scanner
  • 其次,需要创建一个 Scanner 类的对象, Scanner s = new Scanner(System.in);
  • 通过调用Scanner对象的方法来完成,
  • 一定要注意有开有关,最后要调用方法 close()
方法名称搭配方法用途
boolean hasNext()String next()一个用于查看是否有下一个输入,一个用于接收,空格视为结束
boolean hasNextLine()String nextLine()一个用于查看是否有下一个输入,一个用于接收,换行视为结束
  1. haveNext(), next() 方法的尝试
package com.luckylight.package3;import java.util.Scanner;public class Demo1 {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("使用next方式接收:");// next 相当于 scanfif (scan.hasNext()) {String str = scan.next();System.out.println(str);}// 注意有开有关scan.close();}
}
  1. haveNextLine(), nextLine()方法的尝试
package com.luckylight.package3;import java.util.Scanner;public class Demo1 {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.println("使用nextline方式接收:");// nextLine 相当于 getsif (scan.hasNextLine()) {String str = scan.nextLine();System.out.println(str);}// 注意有开有关scan.close();}
}
  1. next()与nextLine()细节方面的介绍
    1. next() – 类似于 c++中的scanf
      1. 必须要读到有效字符才算结束
      2. 有效字符前的空白,next()方法将其自动去除
      3. 得不到带有空格的字符串
    2. nextLine() 类似于 c++中的 getline(cin, str);(String str) || cin.getline(buf, sizeof (buf));–>(char buf[N])
      1. 以 Enter 作为结束符
      2. 可以获得空白

1.2 Scanner 的进一步

  • 之前Scanner 的部分仅仅是返回了 字符串 String类型,也可以进行 int, float, double 的类型,使用方法如下所示:
  • 注意这个 has___这个东西是可以进行隐式转换的,也就是说double 可以接受 int
  • 而且注意,has这个仅是判断,并不接受内容,只有next,他的光标才会往后移动
  • 而且也不能超出范围,否则has__是会返回false 的
方法名称配套方法作用
hasNextInt()nextInt()整数int
hasNextLong()nextLong()整数long
hasNextFloat()nextFloat()浮点数float
hasNextDouble()nextDouble()浮点数double
package com.luckylight.package3;import java.util.Scanner;public class demo2 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int i = 0;float x = 0.0f;// 整数if (scanner.hasNextInt()) {i = scanner.nextInt();System.out.println("你输入的一个整数是:" + i);} else {System.out.println("你没有输入一个整数");}// 浮点数,这个是可以接受整数的if (scanner.hasNextFloat()) {x = scanner.nextFloat();System.out.println("你输入的一个浮点数float=" + x);} else {System.out.println("你没有输入一个浮点数");}scanner.close();}
}

求输入整数数字的和以及平均值

package com.luckylight.package3;import java.util.Scanner;public class demo2 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = 0;double sum = 0.0;while (scanner.hasNextLong()){long tmp;n ++;tmp = scanner.nextLong();sum += tmp;System.out.println("当前你输入的数据是=" + tmp + ", 当前的tmp和为" + sum);}System.out.println("最终的总和为" + sum +", 平均值为 " + sum / n);scanner.close();}
}

1.3 print 与 printLine()

都是java 输出语句

System.out.print(), System.out.printLine()

一个是输出完不换行,print, 一个是输出完会换行, println

2. 顺序结构 & 选择结构 & 循环结构

2.1 顺序结构

直接就是顺序执行,没啥好说的,最基础的程序执行结构,在这里补充一个 小常识。

==与equals的区别

  1. "=="操作符的作用

    1、用于基本数据类型的比较

    2、判断引用是否指向堆内存的同一块地址。

  2. equals的作用:

    1. 用于判断两个变量是否是对同一个对象的引用,即堆中的内容是否相同,返回值为布尔类型

    2. 用法:boolean b = obj1.equals(obj2);

  3. == 与 equals 的区别

    String作为一个对象来使用,查看他们的区别。

    eg1: 对象不同,内容相同

    String s1 = new String("java");
    String s2 = new String("java");System.out.println(s1==s2);            //false
    System.out.println(s1.equals(s2));    //true
    

    eg2:同一对象,"=="和equals结果相同

    String s1 = new String("java");
    String s2 = s1;System.out.println(s1==s2);            //true
    System.out.println(s1.equals(s2));    //true
    

    String作为一个基本类型来使用

    如果值不相同,对象就不相同,所以"==" 和equals结果一样

    String s1 = "java";
    String s2 = "java";System.out.println(s1==s2);            //true
    System.out.println(s1.equals(s2));    //true
    

综上所述,还是使用equals判断稳妥!!!

2.2 选择结构

2.2.1 if 类型

  1. if (condition) —

  2. if (condition) — else —

  3. if (condition1) — else if (conditon2) ------- else —

  4. if 还可以进行嵌套

2.2.2 switch 类型

  • 具体的类型如下示例所示
switch (expression) {case value1 :sentence_1;break;case value2 :sentence_2;break;......default :sentence_n;break;
}
  • 其中的 break, default 都是可选的,一定要注意 有无的区别
  • expression 变量可以使 byte, short, int , 或者是char
  • 从 Java SE 7 开始, switch 就可以支持 String 类型了。
  • case 后面必须跟的是常量表达式,不可以是变量

下面我们写一个switch文件试一试 String 类型,然后介绍IDEA的反编译

  1. 首先我们查看IDEA经过 javac生成的文件放在文件哪个位置

  1. 进入 class 文件路径,将其添加到 idea 的当前工作区域(不可以直接通过 IDEA 加入,但是可以通过文件夹手动加入)

加入后显示如下(倘若加入后还没有,直接 右键 reload from disk 该文件夹即可)

  1. 最后双击该文件打开即可,查看反编译后的文件,发现这个String的Switch原来是使用了 hash 操作。

2.3 循环结构

2.3.1 while, do~while, for

**while, do – while, for **

    while (booleanExpression) {// 循环体}do {// 循环体} while (booleanExpression);for (初始化; booleanExpression; 更新迭代) {// 循环体}

练习一个打印九九乘法表格

注意这个是双引号,不是单引号

for 版本

    for (int i = 1; i <= 9; i ++ ) {for (int j = 1; j <= i; j ++ ) {System.out.printf("%-2d*%2d = %2d,\t", j, i, i * j);}System.out.println();}// 这个是双引号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();}

while 版本

    int i = 1, j = 1;while (i <= 9) {j = 1;while (j <= i) {System.out.printf("%d * %d = %2d,\t", j, i, i * j);j ++;}i ++;System.out.println();}

2.3.2 增强的for循环

  • Java5引入的一种用于数组或者是集合的增强型for循环, 这个东西好像和 c ++ 那个一样 for (auto x : v){} // 遍历vector数组
for (声明语句 : 表达式) {// 代码
}

测试样例

int[] numbers = {10, 20, 30, 35};for (int x : numbers)System.out.println(x);

3. Break & Continue

不带标签的 label 和 continue 是和 c ++ 一模一样的

带标签的 label 和 continue 奇奇怪怪,不建议使用。

public class MultTable {public static void main(String[] args) {label1 : for (int i = 1; i <= 20; i ++ ) {if ((i & 1) == 1) {// continue label1;break label1;}System.out.println(i);}}
}

4. 练习&debug

打印一个三角形

package com.luckylight.package3;/*** @author LuckyLight* @since 8.0* @*/
public class MultTable {public static void main(String[] args) {// 打印一个 n 行的三角形int n = 5;int sumLine = n * 2 - 1;System.out.println(n);System.out.println(sumLine);for (int i = 1; i <= n; i ++ ) {int curCnt = i * 2 - 1;int left = (sumLine - curCnt) / 2;for (int j = 1; j <= sumLine; j ++ ) {if (j <= left || j >= sumLine - left + 1 ) {System.out.print(' ');} else {System.out.print('*');}}System.out.println();}}
}

IDEA 的debug功能超级好用,建议多多尝试

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

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

相关文章

04.卷积神经网络 W1.卷积神经网络(作业:手动/TensorFlow 实现卷积神经网络)

文章目录作业1&#xff1a;实现卷积神经网络1. 导入一些包2. 模型框架3. 卷积神经网络3.1 Zero-Padding3.2 单步卷积3.3 卷积神经网络 - 前向传播4. 池化层5. 卷积神经网络 - 反向传播5.1 卷积层反向传播5.1.1 计算 dA5.1.2 计算 dW5.1.3 计算 db5.2 池化层 - 反向传播5.2.1 最…

html的实战性介绍

Html 简介 超文本结构语言 html并非一种编程语言&#xff0c; 而是一种描述超文本文档的标记语言&#xff0c;用html编写的超文本文档成为html文档。 超文本文档指的是&#xff0c;可以加入图片、声音、动画、影视等内容&#xff0c;并可以利用超链接方便的从一个文件跳转到网…

LeetCode 808. 分汤(动态规划)

文章目录1. 题目2. 解题1. 题目 有 A 和 B 两种类型的汤。一开始每种类型的汤有 N 毫升。有四种分配操作&#xff1a; 提供 100ml 的汤A 和 0ml 的汤B。提供 75ml 的汤A 和 25ml 的汤B。提供 50ml 的汤A 和 50ml 的汤B。提供 25ml 的汤A 和 75ml 的汤B。 当我们把汤分配给某…

LeetCode 848. 字母移位(前缀和+取模)

文章目录1. 题目2. 解题1. 题目 有一个由小写字母组成的字符串 S&#xff0c;和一个整数数组 shifts。 我们将字母表中的下一个字母称为原字母的 移位&#xff08;由于字母表是环绕的&#xff0c; ‘z’ 将会变成 ‘a’&#xff09;。 例如&#xff0c;shift(a) b&#xff…

第一章、OS引论1

1.1 操作系统的目标和作用 1.1.1 操作系统的目标 计算机上安装操作系统&#xff0c;主要目标是&#xff1a;方便性、有效性、可扩充性和开放性。 方便性&#xff1a;方便用户&#xff0c;使计算机变得易学易用有效性&#xff1a;提高系统资源(资源指CPU(处理机),存储器,文件(…

LeetCode 858. 镜面反射(最小公倍数/最大公约数)

文章目录1. 题目2. 解题1. 题目 有一个特殊的正方形房间&#xff0c;每面墙上都有一面镜子。 除西南角以外&#xff0c;每个角落都放有一个接受器&#xff0c;编号为 0&#xff0c; 1&#xff0c;以及 2。 正方形房间的墙壁长度为 p&#xff0c;一束激光从西南角射出&#xf…

Ubuntu从零安装 Hadoop And Spark

安装 linux 以Ubuntu为例 选择镜像&#xff0c;虚拟机安装 虚拟机下&#xff0c;直接安装镜像即可&#xff0c;选择好自己的配置&#xff0c;一定要注意路径名选好&#xff0c;而且和你虚拟机的名称匹配&#xff0c;这里我的镜像是 ubuntu-20.04.2.0-desktop-amd64.iso 切换…

04.卷积神经网络 W2.深度卷积网络:实例探究

文章目录1. 为什么要进行实例探究2. 经典网络3. 残差网络 ResNets4. 残差网络为什么有用5. 网络中的网络 以及 11 卷积6. 谷歌 Inception 网络简介7. Inception 网络8. 使用开源的实现方案9. 迁移学习10. 数据增强 Data augmentation11. 计算机视觉现状作业参考&#xff1a; 吴…

动态规划之最长上升子序列模型

动态规划分为很多模型&#xff0c;比如说数字三角形模型&#xff0c;最长上升子序列模型&#xff0c;背包模型&#xff0c;状态机模型&#xff0c;状态压缩&#xff0c;区间dp&#xff0c;树形dp等等 下面&#xff0c;我就Acwing提高课中&#xff0c;最长上升子序列模型进行了整…

LeetCode 900. RLE 迭代器(模拟/二分查找)

文章目录1. 题目2. 解题2.1 直接模拟2.2 二分查找1. 题目 编写一个遍历游程编码序列的迭代器。 迭代器由 RLEIterator(int[] A) 初始化&#xff0c;其中 A 是某个序列的游程编码。 更具体地&#xff0c;对于所有偶数 i&#xff0c;A[i] 告诉我们在序列中重复非负整数值 A[i …

html-css练习题(系统提示)

代码赏析&#xff1a;<!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible&qu…

机器学习算法--线性回归分析(单元和多元)

关键词 分类模型、回归模型 存在序的离散属性、不存在序的离散属性 有监督的机器学习 回归的分类&#xff08;输入变量数目&#xff0c;输入变量和输出变量的关系&#xff09; 已知数据集&#xff0c;未知参数 均方误差最小化&#xff0c;最小二乘法 一元线性回归 多元线…

LeetCode 740. 删除与获得点数(排序+动态规划)

文章目录1. 题目2. 解题1. 题目 给定一个整数数组 nums &#xff0c;你可以对它进行一些操作。 每次操作中&#xff0c;选择任意一个 nums[i] &#xff0c;删除它并获得 nums[i] 的点数。之后&#xff0c;你必须删除每个等于 nums[i] - 1 或 nums[i] 1 的元素。 开始你拥有…

html-css练习题 (注册表单)

代码赏析&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <meta http-equiv"X-UA-Co…

虚拟机安装 服务器 Ubuntu Server20.04.2

虚拟机安装 服务器 Ubuntu Server20.04.2 下载地址 VMware创建新的虚拟机 首选选择典型 稍后安装操作系统&#xff0c;并点击下一步 选择Linux Ubuntu64位 命名虚拟机 指定虚拟机的容量 点击确定之后开启虚拟机 选择自己下载的镜像文件 打开虚拟机进行配置 单击…

LeetCode 838. 推多米诺(模拟)

文章目录1. 题目2. 解题1. 题目 一行中有 N 张多米诺骨牌&#xff0c;我们将每张多米诺骨牌垂直竖立。 在开始时&#xff0c;我们同时把一些多米诺骨牌向左或向右推。 每过一秒&#xff0c;倒向左边的多米诺骨牌会推动其左侧相邻的多米诺骨牌。 同样地&#xff0c;倒向右边…

html-css练习题(天天生鲜静态网页制作)文末有完整版代码地址链接

一、前言&#xff1a; 前端学习经典练手网页&#xff0c;重新整理网页版代码&#xff0c;如果你是初学者&#xff0c;请试着做一下这个网页 素材&#xff1a;文末完整版代码中。。。。。。 二、效果图&#xff1a; 三、主要需求&#xff1a; 1.login最外侧盒子设定高29 背景…

xshell连接Linux Server

由于server环境下无法使用vmtools&#xff0c;所以推荐使用shell工具进行链接使用。下载的内容源自果核&#xff0c;使用方法&#xff1a; xhell压缩包里面有crack目录&#xff0c;将nslicense.dll文件覆盖到软件目录 xhellplus&#xff0c;将nslicense.dll文件分别覆盖到软件X…

小案例:搭建简易版王者荣耀英雄购买商城网页版

目录 一、网页赏析&#xff1a; 二、代码分三部分&#xff1a; 1、html代码&#xff1a; 2、main.css赏析&#xff1a; 3、初始化reset.css代码&#xff1a; 三、主要素材下载地址&#xff1a; 一、网页赏析&#xff1a; 二、代码分三部分&#xff1a; 1.html 2.初始化…

2020云栖大会编程限时抢答赛 - 早中晚3场题解

文章目录1. 云栖大会限时抢答赛 - 早间场2. 云栖大会限时抢答赛 - 午间场3. 云栖大会限时抢答赛 - 晚间场1. 云栖大会限时抢答赛 - 早间场 题目链接 该场次题目在 LeetCode 上有原题&#xff0c;题解链接如下&#xff1a; LeetCode 862. 和至少为 K 的最短子数组&#xff08…