Java流程控制学习

学习目录

1.用户交互Scanner

2.顺序结构

3.选择结构

4.循环结构

5.break & continue

6.练习

Scanner对象

1.java.util(util=工具包).Scanner是java5的新特征,我们可以通过Scanner类来获取用户的输入;

2.基本语法

Scanner s = new Scanner(System.in);

3.通过Scanner类的next()与nextLine()方法获取输入的字符串,

在读取前,我们一般需要使用 hasNext() 与 hsaNextLine() 判断是否还有输入的数据;

4.基本使用方法

//创建一个扫描器对象,用于接收键盘数据

Scanner scanner= new Scanner(System.in);

//判断有没有字符串数据输入;

if(scanner.hasNext()){

//使用Next()方法接收

String str = scanner.next();

System.out.println("输入的内容为:"+str);

}

//使用完Scanner之后,进行Scanner关闭,进行资源回收;

scanner.close();

//------------

//nextLine()

Scanner scanner= new Scanner(System.in);

//判断有没有字符串数据输入;

if(scanner.hasNext()){

//使用NextLine()方法接收

String str = scanner.nextLine();

System.out.println("输入的内容为:"+str);

}

//使用完Scanner之后,进行Scanner关闭,进行资源回收;

scanner.close();

//------------

注意1:属于IO流的类,如果创建之后,不进行关闭,那么会一直占用资源;

IO流:可以与用户进行交互的类统称为IO流;

//------------

next()

1.一定要读取到有效字符后才可以结束输入;

2.对输入有效字符之前遇到的空白,next()方法会自动将其去掉;

3.只有输入有效字符后,才将其后面输入的空白作为分隔符或者结束符;

4.next() 不能得到带有空格的字符串;

//------------

nextLine();//常用

1.以Enter为结束符,也就是说 nextLine()方法返回的是,输入回车之前的所有字符;

2.可以获得空白;

//------------

hasNextInt();//判断是否输入整数;

nextInt();//获取输入整数;

//------------

hasNextFloat();//判断是否输入小数数据;

nextFloat();//获取输入小数数据;

//------------

1.可以使用Ctrl+鼠标左键在IDEA中点击Scanner类,进入查看其中各种方法;

可以通过侧边栏左边的结构进行查看其中Scanner类的各种方法;

作业:

/*可以输入多个数字,并求其总和与平均数,每输入一个数字,使用回车进行确认,通过输入非数字来结束输入并输出执行结果;*/

//随机创建一个类:

public class Demo01{

//创建main()方法

public static void main(String[] args){

//创建Scanner对象,使用System.in,说明进行的是输入操作;

Scanner sc = new Scanner(System.in);

//创建double型变量接收和值;

double sum=0;

//创建int型变量计次;

int i=0;

//提示输入数字;

System.out.println("请输入数值"+(i+1)+":");

//使用判断循环首while

while(sc.hasNextDouble()){

//是否应创建一个if语句用以判断是否输入的是数值?

//不用,使用hasNextDouble,就是理解的意思了.

//若不使用看一下,不可以不使用循环,条件不成立;

//创建用于接收键盘输入数字变量,类型double

double num=sc.nextDouble();

//计算和值;

sum=sum+num;

//计次

i++;

//提示输入数字;

System.out.println("请输入数值"+(i+1)+":");

}

//循环结束后,和值确认,求平均数值

//创建平均数变量.count?

double count = sum/i;

//输出相应计算结果;

System.out.println("输入的个数有多少个:"+i);

System.out.println("输入的数值和值为:"+sum);

System.out.println("输入的数值平均数为:"+count);

//关闭Scanner对象

sc.close();

}

}

//作业已完成;

scanner.equals("AAA"); equals方法.判断字符串是否相同;

基本结构

顺序结构(struct)

1.java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行下去;

2.顺序结构是/*最简单的算法结构*/

3.语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的;

/*他是任何一个算法都离不开的一种基本算法结构*/

选择结构

1.if单选择结构

很多时候,需要判断一个东西是否可行,那么就需要用到if语句.

如:成绩是否及格;

2.if双选择结构

一个事物,不是只有一种结果,成功了就怎么做,而失败了,又怎么做;那么就需要用到else语句

如成绩:60分以上为及格,60分以下为不及格;

3.if多选择结构

一个事物,不是只有两种结果,那么就需要用到else if + else 语句叠加使用;

如成绩:100-90区间为A,90-80区间为B;80-60为C;60以下为D;

4.嵌套的if结构

在判断的时候,如果需要确认其结果等于在一个范围,并逐步缩小甚至直接判断是否正确;

//快速找到一个数在其规定范围的方法

//取中判断思想,在100个数中查找,将其与50判断,若大于,则为50-100区间,否则为1-50区间

//此操作一下减少一半范围,之后可以继续在想要的范围进行取中值判断,从而达到快速查找的效果;

if(A<=50 && A>0){

//前提条件,需要小于等于50且不为负数,但小于等于50之后,还需要分成两批;

//50-30为A类,30-0为B类;

//A是否小于50,是则进入此处,再次判断

if(A<=50 && A >= 30){

//判断A是否小于等于50,大于30;

//进入这里,说明是符合条件的A类;

System.out.println("A类数值:"+A);

}//否则,则为B类数值;

else{

//因为已经小于50,在没有负数的情况下,只有0-30这一区间了;

//所以相应皆为B类数值,也就不需要使用else if语句再次判断;

System.out.println("B类数值:"+B);

}

}

//注意事项:

1.if语句至多有1个else语句.else语句应写在在所有的else if语句之后;

2.if语句可以有若干个else if语句,它们必须在else语句之前;

3.一旦其中一个if语句判断为true,则其他所有的else if 和 else语句皆将被跳过执行判断;

4.所有的流程控制语句,皆可以相互嵌套,而互不影响;

//-------------------

5.switch多选择结构

1.多选择结构还有一个实现方式就是switch case语句;

2.switch case语句用来匹配一个变量与一系列值中某个值是否相等,每个值称为一个分支;

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

byte.short.int或者char

4.从java SE7开始 switch支持字符串String类型了;

5.同时case标签必须为字符常量或字面量;

6.在switch语句中,可以创建多个case分支,但只能有一个默认default语句分支;

7.case分支语句块中,必须带有break(跳出循环)语句,不然会穿透执行;

基本语法:

switch (表达式){

case (字符常量或字面量):

break;

case "String":

break;

default :

//default,默认方法,不用进行判断.反正各种判断都没有,就会执行default方法;

//default方法,可写,可不写;

//在不写的情况下,必须保证case值可以匹配到相应的值,否则会发生case穿透;

}

循环结构

do...while //循环判断首

for循环//计次循环首

1.在java5中引入了一种主要用于数组的增强型for循环;

/*-------------------------*/

while循环//判断循环首

1.最基本的循环结构

2.只要布尔表达式为true,循环则会一直循环;

3./*我们大多数情况是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环;*/

4.循环条件一直为true就会造成无限循环(死循环),我们正常的业务编程中应尽量避免死循环.会影响程序性能或者造成程序卡死崩溃;

思考:1+2+3..+100=?

int sum=1;

inti=2;

while(i<=100){

sum=sum+i;

i=i+1;

}

/*-------------------------*/

do...while循环

1.对于while语句而言,如果不满足条件,咋不能进入循环.但有时候我们需要即使不满足条件,也至少执行一次;

2.do...while循环和while循环相似,不同的是,哪怕条件不满足,do...while也会执行至少一次;

3.while循环和do...while的区别

while循环是先判断,再执行,而do...while循环是先循环,再判断;

do...while总是保证循环体会被至少执行一次;这是他们的主要差别

/*-------------------------*/

for循环

1.虽然所有循环结构都可以使用while或者do...while表示,但java提供了另一种语句--for循环,

使一些循环结构变得更加简单;

2.for循环语句时支持迭代的一种通用结构,是最有效,最灵活的循环结构;

3.for循环执行的次数是在执行前就确定的;

练习1:计算0-100之间的奇数和偶数的和;

练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个;

练习3:打印九九乘法表;

练习1:

//创建for循环体

//创建一个变量来接收奇数的和;

int num1=0;

//创建一个变量来接收偶数的和;

int num2=0;

for (int i = 0; i <= 100; i++) {

//判断是否为偶数

if (i % 2 == 0) {

//求余%2等于0的数,得到的是偶数;

num2 = num2 + i;

} else {

//否则则为奇数;

num1 = num1 + i;

}

}

System.out.println("奇数之和:"+num1+" 偶数之和:"+num2);

//练习1完成

//------------------

//练习2:

//好像只能创建一个数组,才能方便一些做这道题;

//并且需要使用arrayList;这个我好像不太懂用了;

//也可以使用三个变量用来保存;输出之后再进行覆盖,虽然很傻...

int num1=0;

int num2=0;

int num3=0;

int i1=0;

for(int i=1;i<=1000;i++){

if(i%5==0){

i1++;

//得到的皆为可以被5整除的数;

//每行输出三个...

//再创建一个计数变量...3次循环;

if(i1%3==1){

num1=i;

}else if(i1%3==2){

num2=i;

}else if(i1%3==0){

num3=i;

//输出结果,不然等下就会漏掉了;

System.out.println("第一个:"+num1+" 第二个:"+num2+" 第三个:"+num3);

}

}

}

}

}

//勉强完成;练习2

练习2:重置

for(int i=1;i<=1000;i++){

if(i%5==0){

//输出不换行,显示满3个,之后再换行;

System.out.print(i+"\t");

}

if(i%15==0){

//换行方法1;

System.out.println();

//换行方法2;

System.out.print("\n");

}

}

//------------------

练习3:

//九九乘法表一共九层;

//需要至少两个变量;循环好像需要嵌套,好弄一些;

//没那么简单额;原来刚才写错了,第二个for循环的i1没整好;

//现在可以是可以,但不美观;

//勉勉强强,弄美观一点;现在勉强还行,加了逢9换行;

//需要去掉一些重复的;//未完

for(int i=1;i<=9;i++){

for(int i1=1;i1<=9;i1++){

//好像直接输出都可以了

System.out.print(i+"*"+i1+"="+i*i1+" ");

if(i1==9){

System.out.println();

}

}

}

//好像完成了勉勉强强;练习3;

练习3:重置

//按横行思考,每次内循环小于外循环,则每次减少输出一个;

//由上而下

//第一次,外1,内1

//第二次,外2,内2

//第九次,外9,内9

//由网友提供思路...

//由列思考,不好思考,换成按行思考,好解决;

for (int i = 1; i <= 9; i++) {

//将内计次小于外计次即可删除重复

for (int i1 = 1; i1 <= i; i1++) {

//好像直接输出都可以了,加上\t,使其排列整齐;

System.out.print(i + "*" + i1 + "=" + i * i1 + "\t");

}

//每次到外面就进行换行

System.out.println();

}

//------------------

//迭代:每次调用这个值的时候进行刷新;

A+=1;//迭代

i++;//迭代

//------------------

/*for循环*/

1.最先执行初始化步骤,可以声明一种类型,可以初始化一个或者多个循环控制变量;也可以是空语句;

2.然后检查boolean表达式;如果为true,进入循环体执行,如果为false,跳过循环体不执行,顺序执行for循环后面的语句;

3.执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减);

4.再次检查boolean表达式;重复上述步骤;

//------------------

增强型for循环

1.java5引入了一种主要用于数组或集合的增强型for循环.

2.java增强for循环语法格式如下:

for(声明语句 : 表达式){

//代码句子

}

3.声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配;

其作用域限定在循环语句块,其值与此时数组元素的值相等;

4.表达式:表达式是要访问的数组名,或者是返回值为数组的方法;

代码示例:

int[] numbers={10,20,30,40};

for(int x:numbers){

//numbers数组里面的值,皆赋值给了X;

System.out.println(x);

}

//数组是一种数据结构;

break && continue

break:

1.break在任何循环语句的主题部分,均可用break控制循环的流程.

2.break用于/*强行退出循环*/,不执行循环中剩余的语句(break语句也在switch语句中使用);

//-----------

continue:

1.continue语句用在循环语句体中,用于/*终止某次循环过程*/,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定;

//-----------

关于goto关键字:

1.goto关键字很早就在程序设计语言中出现,尽管goto仍是java的一个保留字,但并未在语言中得到正式使用;

2.java没有goto,然而,在break和continue这两个关键字的身上,

我们仍然能看出一些goto的影子---带标签的break和continue

3."标签"是指后面跟一个冒号的标识符,例如: label:

4.对java来说唯一用到标签的地方实在循环语句之前,而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通畅只中断当前循环,但若随同标签使用,它们就会中断到存在标签的地方;

label代码示例:

//打印101-150之间所有的质数;

//质数是指在大于1的自然数中,除了1和它本身以外不再有其他因素的自然数;

//标签形式(不建议使用)

int count = 0;

outer:for(int i=101;i<150;i++){

for(int j=2;j

//将i/2得到1/2的i,将j自增到一半,求余,皆不可被整除;

//则其为质数;

if(i % j==0){

//跳转回label标签处;

continue outer;

}

System.out.println(i+" ");

}

}

//-----------

流程控制练习:

//打印三角形5行

代码示例:

//将三角形拆分打印输出

//先打印左上角空格;再打印左半部分三角形;

for(int i=1;i<=5;i++){

//由行思考,第一行输出5个空格;

//第二行输出4个,第三行输出3;第五行输出1;

//之后再在第一行输出一个*号;第二行输出2个,第五行输出5个;

for(int j=5;j>=i;j--){

System.out.print(" ");//不进行换行操作;交由后面

}

//已测试可以输出倒三角空格,则再建立一个for循环

//在去第一行打印出5个空格时,换行之前;添加左半部分三角形;

//第一次输出一个星号,这个是正序三角形;

for(int j=1; j<=i ;j++){

System.out.print("*");//不进行换行操作;交由后面

}

//好像再复制多一份上方for循环打印*号即可;

//这样的话,最上方,还缺一点*号,不是太好看,不过也算三角形

//中间的条件判断不是j<=i,而是j

//因为原来设置j<=i,j=1,i=1,那么第一行也会输出,就会造成第一行两个星号;

//设置j

for(int j=1; j

System.out.print("*");//不进行换行操作;交由后面

}

//换行

System.out.println();

}

反编译

java--->class(字节码文件)--->(反编译)java(Idea);

将需要反编译的class文件,存放至java后缀文件包下,再从idea中打开即可;可进行查看源代码;

java -1%3_Java_SE 流程控制相关推荐

  1. Java学习笔记——流程控制

    Java学习笔记--流程控制 Day05 一.用户交互Scanner 1.Scanner对象 我们通过Java工具包java.util.Scanner中的Scanner类来获取用户的输入 基本语法:S ...

  2. Java杂记3—流程控制之条件

    流程控制 首先来介绍程序的流程控制. 所谓的流程控制,就是在我们前面的课程中我们已经学过了变量,数据类型,运算符,表达式,这些都是计算机编程的基本元素,但是我们程序的基本执行单元应该是语句,程序执行, ...

  3. 4、java中的流程控制(程序结构)

            说一下java的流程控制(程序结构),其实对于计算机而言,无非就那几类执行流程(程序结构),程序从头到尾依次执行每一行代码,这就是顺序结构:也可能在执行过程中遇到条件判断,造成程序运行 ...

  4. JAVA语言中流程控制(顺序结构、判断语句、循环语句)

    流程控制: 程序在执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的,所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要通过控制语句的执行顺序来实现想要的功能.java中流程控制有:顺 ...

  5. Java杂记3—流程控制之条件 1

    流程控制 首先来介绍程序的流程控制. 所谓的流程控制,就是在我们前面的课程中我们已经学过了变量,数据类型,运算符,表达式,这些都是计算机编程的基本元素,但是我们程序的基本执行单元应该是语句,程序执行, ...

  6. java学习之流程控制

    编写代码如下: package 第1章.java概要;public class _4_流程控制 {//if-elsepublic static void testIfElse(int num){Sys ...

  7. 【Java程序设计】流程控制

    流程控制 文章目录 流程控制 一.块作用域 二.条件语句 1.单分支 if 语句 2.双分支 if-else 语句 3.嵌套 if 语句 4.多分支 if-else if 语句 5.switch 语句 ...

  8. Java学习:流程控制

    程序在执行过程中需要执行的路径,我们需要控制. 8.1 流程控制分类 顺序流程 程序进入之后,依次逐行执行里面的代码.顺序结构是整个程序执行的主干. 分支流程 在程序执行的过程中,有可能针对于某种情况 ...

  9. Java高效率复习-流程控制与数组[Java]

    两种基本的流程控制结构:分支结构和循环结构. 分支结构:根据特定的条件来选择性的执行某段代码. 循环结构:根据实现循环条件重复执行某段代码. Java分支结构提供了if和switch语句;循环结构提供 ...

最新文章

  1. 【分享】博客美化(6)为你的博文自动添加目录【转】
  2. 从0到50家AI独角兽,中国人工智能凭什么让世界刮目相看?
  3. 成功解决absl.flags._exceptions.UnrecognizedFlagError: Unknown command line flag 'data_format'
  4. 官方首次披露,TDSQL十年自主可控之路(附PDF)
  5. 【通俗易懂】C语言中,for循环中i++与++i的区别
  6. DBN训练学习-A fast Learning algorithm for deep belief nets
  7. mysql存储过程表迁移for_MySQL存储过程--通过游标遍历和异常处理迁移数据到历史表 (转)...
  8. HighChat动态绑定数据 数据后台绑定(三)
  9. PYTHON——多线程:Thread类与线程函数
  10. 如何构建NLP Pipeline,各模块代码实现细节全在这里!
  11. java 静态库和动态库_Android下Java的静态库和动态库
  12. 《Java EE互联网轻量级框架整合开发》在京东预售,发个目录
  13. 怎么看计算机的硬盘牌子,硬盘序列号,详细教您怎么查看硬盘序列号
  14. mysql时间作为条件查询_MySQL的时间条件查询
  15. 少儿学python 仿真秀_“在家学”仿真:使用Python进行SCDM脚本建模攻略
  16. Visio如何裁剪图片
  17. 项目实战--Ego微商小程序
  18. HTML5期末大作业:个人生活网站设计——简单的个人生活记录介绍网页模板HTML+CSS+JavaScript 生活网页HTML代码 学生网页课程设计期末作业下载 动漫大学生网页设计制作成
  19. ubuntu 打印git邮箱_win 10配置Ubuntu子系统—可以考虑放弃VMware了
  20. 怎样用一台手机做自媒体?

热门文章

  1. appdesigner与simulink交互
  2. 基于航空RFID行李处理应用方案
  3. 人工智能之路学习计划
  4. 干货!如何快速拥有自己的商城APP
  5. python_飞机大战_main_py_一
  6. 关于仿写00片刻企业站
  7. 【GDScript】保存/加载物品装备数据
  8. LikeLib,这才是真实的百万级别TPS
  9. 白皮书显示,2022年仅有28.4%企业实现社保基数完全合规,有38.1%企业额外购买补充商业保险 | 美通社头条...
  10. PRBS-存储器测试