流程控制

一、用户交互scanner

1.1 Scanner对象

我们学习的基本语法中我们并没有实现程序和人的交互,但Java给我们提供了这样一个工具类,我们可以获取用户的输入。java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入。

基本语法:

Scanner s = new Scanner(System.in);

通过Scanner类的next()与nextLine()方法获取输入的字符串,在读入前我们一般需要使用hasNest()与hasNestLine()判断是否还有输入的数据。

import java.util.Scanner;

public class Hello {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);//创建一个扫描器对象,用于接受键盘数据
if(scanner.hasNext()){//判断用户有没有输入字符串
String str = scanner.next();//使用next方法接收
System.out.println(str);
}
scanner.close();//用完后scanner后要把它关掉,节省资源
}
}
  • next():

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

1.2 Scanner进阶使用

import java.util.Scanner;

public class Hello {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int i = 0;
float f = 0.0f;
if(scanner.hasNextInt()){//如果下一个数是整数
i = scanner.nextInt();
System.out.println(i);//输出这个整数
}
else{
System.out.println("error!");//否则输出errorint
}
if(scanner.hasNextFloat()){//如果下一个数是浮点数
f = scanner.hasNextFloat();
System.out.println(f);//输出该浮点数
}
else{
System.out.println("errorfloat!");//否则输出errorfloat
}
scanner.close();
}
}

二、顺序结构

  • Java的基础结构就是顺序结构,除非特别指明,否则就按照顺序一句句执行。
  • 顺序结构就是最简单的算法结构。
  • 语句与语句之间,框与框之间是按照从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构

三、选择结构

3.1 if单选择结构

判断一个东西是否可行,然后我们才去执行,这样一个过程在程序中用if语句来表示

语法:

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

3.2 if双选择结构

可行执行一事件,不可行执行另一事件

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

3.3 if多选择结构

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

3.4 嵌套的if结构

使用签到的if…else语句是合法的。可以在另一个if或者else if语句中使用if或者else if语句,你可以像if语句一样签到esle if…else。

语法:

if(布尔表达式1){
//如果布尔表达式1的值为true主席那个代码
if(布尔表达式2){
//如果布尔表达式2的值为true执行代码
}
}

3.5 switch多选择结构

多选择结构还有一个实现方法就是switch case语句。

switch case语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

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

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

  • byte、short、int、char。
  • 从Java SE 7 开始switch支持字符串String类型
  • 同时case标签必须为字符串常量或字面量。

四、循环结构

4.4 while循环

while循环是最基本的循环,结构为:

while(布尔表达式){
//循环内容
}
  • 只要布尔表达式为true,循环就会一直执行下去。
  • 我们需要一个让表达式失效的方式来结束循环。
  • 少部分情况需要循环一直执行,比如服务器的请求相应监听等。
  • 循环条件一直为true会造成无线循环【死循环】,我们正常的业务编程中应该尽量避免死循环,会影响程序性能或者造成程序卡死崩溃。

4.5 do…while循环

对于while循环,如果不满足条件,则不能进入循环,但是有时候,我们需要即使不满足条件,也至少执行一次。

do…while循环和while循环类似,不同的是,do…while循环至少会执行一次。

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

while与do…while的区别:

  • while先判断后执行,do…while是先执行后判断!
  • do…while总是保证循环体会执行一次。

4.6 for循环

  • 虽然所有循环结构都可以用while或者do…while表示,但java提供了另外一种语句——for循环,使一些循环结构变得更加简单。
  • for循环语句是支持迭代的一种通用结构,是最有效,最令话的循环结构。
  • for循环执行的次数是在执行之前就确定的。语法格式如下:
for(初始化;布尔表达式;更新){
//代码语句
}

4.7 增强for循环

  • 目前先做个了解,之后数组重点使用。
  • Java5引入了一种主要用于数组或集合的增强型for循环
  • Java增强for循环语法格式如下:
for(声明语句:表达式){
//代码句子
} public class Hello {
public static void main(String[] args) {
int[] numbers = {10, 20, 30, 40, 50, 60};//定义了一个数组
for (int x:numbers) {
System.out.println(x);
}
}
}
  • 声明语句:声明心得局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
  • 表达式:表达式是要访问的数组名,或者是返回值为数组的方法。

五、break、continue

  • break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也可以在switch语句中使用)
  • continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。

关于goto关键字

  • goto关键字很早就在程序设计语言中出现,尽管goto仍是Java的一个保留字,但并未在语言中得到正式的使用;Java没有goto,然而,在break和continue这两个关键字身上,我们仍能看出一些goto的影子——带标签的break和continue。
  • “标签”是指后面跟一个冒号的标识符,例如label:
  • 对Java来说唯一用到标签的地方是在循环语句之前,而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常只终端当前循环,但若随标签同时使用,他们就会中断到存在标签的地方。

【Java】流程控制的更多相关文章

  1. JAVA流程控制

    JAVA流程控制 example1: --输出九九乘法表 public class chengfabiao { public static void main (String[] args){     ...

  2. Java学习笔记之:Java流程控制

    一.介绍 Java流程控制包括顺序控制.条件控制和循环控制. 顺序控制,就是从头到尾依次执行每条语句操作.条件控制,基于条件选择执行语句,比方说,如果条件成立,则执行操作A,或者如果条件成立,则执行操 ...

  3. Java流程控制练习--万年历

    Java流程控制练习--万年历 标签: Java入坑之旅 0x01. 打印倒三角和正三角 public static void main(String[] args) { // TODO Auto-g ...

  4. Java 流程控制

                                   Java    流程控制 Java 分支结构 - if...else/switch 顺序结构只能顺序执行,不能进行判断和选择,因此需要分支 ...

  5. JAVA 流程控制之选择语句

    在程序设计时,有三种基本技术可以改变程序的流程控制: 调用方法: 选择: 循环. 在这里,我们主要来讲讲选择语句. JAVA中的选择语句与C语言中的基本相同,包括: if 语句: if/else 语句 ...

  6. 《快乐编程大本营》java语言训练班-第4课:java流程控制

    <快乐编程大本营>java语言训练班-第4课:java流程控制 第1节. 顺序执行语句 第2节. 条件分支语句:if条件语句 第3节. 条件分支语句:switch 条件语句 第4节. 条件 ...

  7. Java流程控制,for,switch,while.break,continue,return

    Java流程控制,for,switch,while.break,continue,return

  8. 053 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 15 流程控制知识总结

    053 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 15 流程控制知识总结 本文知识点: 流程控制知识总结 流程控制知识总结 选择结构语句 循环结构语句 ...

  9. 052 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 14 Eclipse下程序调试——debug2 多断点调试程序

    052 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 14 Eclipse下程序调试--debug2 多断点调试程序 本文知识点: Eclipse下程序调 ...

  10. 051 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 13 Eclipse下程序调试——debug入门1

    051 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 13 Eclipse下程序调试--debug入门1 本文知识点: 程序调试--debug入门1 程序 ...

随机推荐

  1. LuoguP1619 解一元二次方程的烦恼 题解

    Content 模拟一个系统,给出一个数 \(n\),让你判断是否是素数,如果是合数的话就要质因数分解. 需要注意的几点: 数字超过 \(4\times 10^7\),输出溢出提示. 数字小于 \(2 ...

  2. LuoguP6553 Strings of Monody 题解

    Content 给定一个长度为 \(n\) 的字符串 \(s\)(仅包含 \(1,4,5\) 三种字符,\(n\) 在本题中无需输入),有 \(m\) 个操作,每次操作给定两个整数 \(l,r\),再 ...

  3. UVA760 DNA Sequencing 题解

    Content 给出两个小写字母组成的字符串,求两个字符串的最长公共子串,如有多个按字典序顺序输出,如没有输出 No common sequence.,每两组数据间输出一个空行,最后一组数据后不应输出 ...

  4. LuoguP7694 [COCI2009-2010#4] AUTORI 题解

    Content 科学论文会大量引用一些早期的著作,因此在一个论文中出现两种不同的命名约定并不少见.这两种不同的命名约定分别是: 长变体,由每个作者姓氏的完整单词由连字符连接而成,例如 Knuth-Mo ...

  5. CF1497A Meximization 题解

    Content 给定 \(n\) 个数 \(a_1,a_2,\dots,a_n\),你需要将这些数重新排列,使得 \(\sum\limits_{i=1}^n\operatorname{mex}(a_1 ...

  6. LuoguP7189 [COCI2007-2008#6] PARKING 题解

    Content 有 3 辆卡车,第 \(i\) 辆卡车停车开始时间为 \(l_i\),结束时间为 \(r_i\)(不包含).现在有以下收费方式: 停车辆数 每分钟每辆车单价 \(1\) \(a\) \ ...

  7. Solon,一个轻量级的应用开发框架。发布官网喽!!!

    官网发布: https://solon.noear.org/ 项目简介: Solon,是一个轻量级的应用开发框架.更快.更小.更自由! 支持JDK8+:主框架0.1Mb:组合不同的插件应对不同需求:方 ...

  8. windows系统中远程登录ubuntu18服务器的桌面

    下载:http://www.c-nergy.be/products.html 也可以直接服务器里 wget https://www.c-nergy.be/downloads/xRDP/xrdp-ins ...

  9. 【九度OJ】题目1118:数制转换 解题报告

    [九度OJ]题目1118:数制转换 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1118 题目描述: 求任意两个不同进制非 ...

  10. 一个网关服务性能问题的Dump分析

    本篇文章分为三部分,首先简单介绍一下分析的工具Windbg,其次针对一个网关服务性能问题进行逐步刨析,最后针对性能问题的分析总结. 一 Windbg介绍 1.Windbg是个非常强大的调试器,它设计了 ...