巩固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. MySql分表、分库、分片和分区的区别

    一.前言 数据库的数据量达到一定程度之后,为避免带来系统性能上的瓶颈.需要进行数据的处理,采用的手段是分区.分片.分库.分表. 二.分片(类似分库) 分片是把数据库横向扩展(Scale Out)到多个 ...

  2. 反转链表middle

    eg: 输入:head = [1,2,3,4,5], left = 2, right = 4 输出:[1,4,3,2,5]相关解法:图解: /** * Definition for singly-li ...

  3. php curl发送数据和文件

    function mycurl($file, $url, $aid) { // 如果文件名是中文名,将中文字符编码转换一下 $file=iconv("UTF-8","gb ...

  4. 『Python』列表生成式、生成器与迭代器

    1. 迭代 在 Python中, 迭代是通过 for ... in 来完成的, 而很多语言比如 C 语言, 迭代 list 是通过下标完成的. Python 的 for 循环抽象程度要高于 C 的 f ...

  5. 分析 ajax 请求并抓取 “今日头条的街拍图”

    今日头条抓取页面: 分析街拍页面的 ajax 请求: 通过在 XHR 中查看内容,获取 url 链接,params 参数信息,将两者进行拼接后取得完整 url 地址.data 中的 article_u ...

  6. GitHub 和 Gitee 开源免费 10 个超赞后台管理面板,看完惊呆了!

      软件工程师在实际项目开发中不可避免需要依赖一些前后端的后台管理系统框架,而不是从零开始一点点的搭建,浪费人力.目前市面上有很多开放源码.且免费的后台管理面板,样式色彩也比较丰富美观.   今天整理 ...

  7. Jmeter压测学习6---登录参数CSV

    前言 我们在压测登录接口的时候,如果只用一个账号去设置并发压测,这样的结果很显然是不合理的,一个用户并发无法模拟真实的情况.如果要压测登录接口,肯定得准备几百,甚至上千的账号去登录,测试的结果才具有可 ...

  8. 👊 Spring技术原理系列-从零开始教你SpringEL表达式使用和功能分析讲解指南(上篇)

    Spring EL表达式语言,这种语言jsp中学到的el,但是在整个spring之中其表达式语言要更加的复杂,而且支持度更加的广泛,最重要的是他可以进行方法的调用,对象的实例化,集合操作等等,但是唯一 ...

  9. 基于C++的ButeBuf封装

    目录 1.说明 2.代码 1.说明 netty 的 ByteBuf 中的 readerIndex 和 writerIndex 的设置十分巧妙,它内部对读取和写入位置进行控制,避免自己处理index的时 ...

  10. 题解 「BZOJ2178」圆的面积并

    题目传送门 题目大意 给出 \(n\) 个圆,求它们并的面积大小. \(n\le 10^3\) 思路 如果您不会自适应辛普森法,请戳这里学习 其实我们发现,如果我们设 \(f(x)\) 表示 \(x= ...