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

一、用户交互Scanner

通过Scanner类获取用户的输入

import java.util.Scanner;

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

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

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

  • next()

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

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

import java.util.Scanner;

public class Demo3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//和
double sum = 0.0;
//计算输入了多少个数字
int n = 0;
//通过循环判断是否还有输入,并在里面对每一次进行求和统计
while (scanner.hasNextDouble()) {
double x = scanner.nextDouble();
n++;
sum = sum+x;
}
System.out.println(n+"个数的和为:"+sum);
System.out.println(n+"个数的平均值为:"+(sum/n)); scanner.close();
}
}

二、顺序结构

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

三、选择结构

1、if单选择结构

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

2、if双选择结构

if(布尔表达式) {
//如果布尔表达式为true将执行的语句
}else {
//如果布尔表达式为false将执行的语句
}

3、if多选择结构

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

4、if嵌套结构

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

5、switch选择结构

switch(expression) {
case value:
//语句
break; //可选
case value:
//语句
break; //可选
//任意数量case语句
default: //可选
//语句
}

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

//理解case的穿透力
public class Demo5 {
public static void main(String[] args) {
char grade = 'C';
switch (grade) {
case 'A':
System.out.println("满分");
case 'B':
System.out.println("优秀");
case 'C':
System.out.println("及格");
case 'D':
System.out.println("不及格");
default:
System.out.println("未知");
}
}
}
//及格
//不及格
//未知

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

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

public class SwitchDemo {
public static void main(String[] args) {
//须知:字符的本质还是数字
//反编译即可发现 String fruit = "大西瓜";
switch (fruit) {
case "大西瓜":
System.out.println("大西瓜");
break;
case "草莓":
System.out.println("草莓");
break;
case "菠萝":
System.out.println("菠萝");
break;
default:
System.out.println("哈密瓜");
}
}
}

反编译一下:

四、循环结构

1、while循环

while(布尔表达式) {
//循环内容
}

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

2、dowhile循环

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

while和do...while的区别

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

3、for循环

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

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

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

public class WhileDemo {
public static void main(String[] args) {
int i = 0;
int sum = 0;
while (i<=100) {
sum = sum+i;
i++;
}
System.out.println(sum);
}
}
public class DoWhileDemo {
public static void main(String[] args) {
int i = 0;
int sum = 0;
do {
sum = sum+i;
i++;
}while (i<=100);
System.out.println(sum);
}
}
public class ForDemo {
public static void main(String[] args) {
int sum = 0;
for (int i = 0; i <= 100; i++) {
sum = sum+i;
}
System.out.println(sum);
}
}

4、增强for循环

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

遍历用法:

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

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. 最全Windows版本jemalloc库(5.2.1)及其使用:包含动态库和静态库、x86版本和x64版本、debug版本和release版本

    编写服务器程序时,需要频繁的申请和释放内存,长时间运行会产生大量的内存碎片,这就导致即使当前系统中的闲置内存还足够多,但也无法申请到大的连续可用的内存块,因为此时的物理内存已经千疮百孔像个马蜂窝.此外 ...

  2. PHPCMS V9轻松完成WAP手机网站搭建全教程

    ---恢复内容开始--- 应用PHPCMS V9轻松完成WAP手机网站搭建全教程 用PHPCMS最新发布的V9搭建了PHPCMS研究中心网站(http://www.17huiyi.net)完成后,有用 ...

  3. javascript 面向对象 模块

    * module 完成函数 createModule,调用之后满足如下要求:1.返回一个对象2.对象的 greeting 属性值等于 str1, name 属性值等于 str23.对象存在一个 say ...

  4. php 解决返回数据 数字 变成科学计数法后转换问题

    链接 https://blog.csdn.net/liuxin_0725/article/details/81514961 问题 id int型 数字过长,json_decode的时候已经转成科学计数 ...

  5. JDBC连接mariadb时使用依赖

    问题描述:最近在尝试使用mariadb,使用idea开发,在使用jdbc连接数据库的时候,一般会用到driver,user,pwd,url,使用mysql的例子太多了,也有很多详细的教程,但是现在尝试 ...

  6. FastAPI(45)- JSONResponse

    背景 创建 FastAPI 路径操作函数时,通常可以从中返回任何数据:字典.列表.Pydantic 模型.数据库模型等 默认情况下,FastAPI 会使用 jsonable_encoder 自动将该返 ...

  7. Java - 你的 Java 代码有这些坏味道吗?

    列举一些 Java 开发中常见的"不良实践",来源于代码扫描(https://github.com/pmd/pmd),和诸君一起学习参考: 1 - 关闭资源 CloseResour ...

  8. 题解 AVL 树

    link Description 给出一个 \(n\) 个点的 AVL 树,求保留 \(k\) 个点使得字典序最小. \(n\le 5\times 10^5\) Solution 因为我很 sb ,所 ...

  9. 从 MVC 到使用 ASP.NET Core 6.0 的最小 API

    从 MVC 到使用 ASP.NET Core 6.0 的最小 API https://benfoster.io/blog/mvc-to-minimal-apis-aspnet-6/ 2007 年,随着 ...

  10. HCNP Routing&Switching之BGP邻居建立条件、优化和认证

    前文我们了解了BGP相关概念.AS相关概念以及BGP邻居类型.基础配置等,相关回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15370838.html:今天我们 ...