JavaSE——流程控制(接收输入Scanner、分支结构(if与switch)、循环结构(while、do-while与for))

第3节 流程控制

一、接收用户输入

使用Scanner类来接收用户的输入。

新建一个Scanner对象:Scanner input = new Scanner(System.in);

input可以接收各种数据类型的输入:比如nextIntnextByte等,但是这样不太安全,因为如果输入了别的类型的数据,代码就会直接报错;

所以比较常用的是next()nextLine(),它们都返回的是String类型;

  • 其中next会从第一个不为空格的字符开始接收,然后遇到空格或换行符结束接收;

  • nextLine会接收一整行内容,直到遇到换行符结束接收;

  • 注意不要同时使用nextnextLine,会得不到想要的结果。

import java.util.Scanner;public class input {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入next接收的内容:");String str1 = input.next();System.out.println(str1);}
}

结果如下:

请输入next接收的内容:24dg  78tyu
24dg
import java.util.Scanner;public class input {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入nextLine接收的内容:");String str2 = input.nextLine();System.out.println(str2);}
}

结果如下:

请输入nextLine接收的内容:ud78  56dgy__@#$  !~ud78  56dgy__@#$  !~

二、执行结构

   1996 年, 计算机科学家 Bohm 和 Jacopini 证明了: 任何简单或复杂的算法都可以由顺序结构、 分支结构和循环结构这三种基本结构组合而成。它们的共同点是都包含一个入口和一个出口, 它们的每个代码都有机会被执行, 不会出现死循环。
  • 顺序结构 :一种基本的控制结构,按照语句出现的顺序执行操作;

  • 分支结构 :又称为选择结构,根据条件成立与否来执行操作;

  • 循环结构 :一种重复结构,如果条件成立,它会重复执行某一循环体,直到出现不满足的条件为止。

三、分支结构

3.1 if条件语句

if 条件结构是根据条件判断之后再做处理

  • if(条件语句){…}

  • if (条件语句){…}else{…}

  • if (条件语句){…}else if(条件语句){…}

  • if (条件语句){…}else if(条件语句){…}else{…}

例子: 用户输入学生成绩, 判断成绩是否及格, 判断条件为 优良: > 90、 良好: 81-90、 中: 60-80、 不及格: <60

import java.util.Scanner;public class ifelse {public static void main(String[] args) {System.out.println("请输入考试成绩:");Scanner input = new Scanner(System.in);int s = input.nextInt();if(s >= 120 || s < 0) {System.out.println("输入成绩有误!");}else if(s >= 90) {System.out.println("成绩优秀!");}else if(s >= 80) {System.out.println("成绩良好!");}else if(s >= 70) {System.out.println("成绩合格!");}else {System.out.println("成绩不合格!");}}
}

3.2 switch语句

switch(表达式){  case 取值 1: 语句块 1;break;  case 取值 n: 语句块 n;break;  default: 语句块 n+1;break;  }

switch 语句有关规则

  • 表达式的返回值必须是下述几种类型之一: int, byte, char, short,String;

  • case 子句中的取值必须是常量, 且所有 case 子句中的取值应是不同的;

  • default 子句是可选的;

  • break 语句用来在执行完一个 case 分支后使程序跳出 switch 语句块; 如果 case 后面没有写 break 则直接往下面执行!

  • case 后面的执行体可写{ }也可以不写{ }

例题: 多分支月份输出天数(充分利用语句特性)

import java.util.Scanner;public class switchcase {public static void main(String[] args) {System.out.println("请输入一个月份(1-12):");Scanner input = new Scanner(System.in);String text = input.next();switch (text) {case "1":case "2":case "3":System.out.println("春季");break;case "4":case "5":case "6":System.out.println("夏季");break;case "7":case "8":case "9":System.out.println("秋季");break;case "10":case "11":case "12":System.out.println("冬季");break;default:System.out.println("输入月份有误!");break;}}
}

四、循环结构

**循环语句功能 **

    在循环条件满足的情况下, 反复执行特定代码

**循环语句分类 **

  • for 循环

  • while 循环

  • do/while 循环

4.1 while循环语句

符合条件, 循环继续执行; 否则, 循环退出

特点: 先判断, 再执行

语法:

while(条件表达式){  //语句块;  }

使用 while 循环的步骤
1、 分析循环条件和循环操作
2、 套用 while 语法写出代码
3、 检查循环是否能够退出

实现示例:

录入班级人数和学员成绩, 计算班级学员的平均成绩

import java.util.Scanner;public class whiledemo {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请输入班级总人数");//使用变量studentNum记录班级总人数int studentNum = input.nextInt();//用于记录循环的次数,以及控制循环何时结束int i = 0;//定义变量sum,用于统计总分数int sum = 0;while(i < studentNum) {i++;System.out.println("请输入第"+i+"个学生的成绩:");int s = input.nextInt();sum += s;}System.out.println("学生的平均成绩为:"+sum/studentNum);}
}

4.2 do-while循环语句

先执行一遍循环操作, 符合条件, 循环继续执行; 否则, 循环退出

特点: 先执行, 再判断

语法:

do {  //循环操作  }while ( 条件表达式 );

**while 循环和 do-while 循环的区别? **

  • while:先判断条件, 如果条件满足, 再执行循环操作

  • do while:先执行一遍循环操作, 然后再判读条件, 如果条件满足, 继续执行循环操作。

4.3 for循环语句

语法:

for(初始化参数; 判断条件; 更新循环变量){  //循环体;  }

4.4 break与continue

break是用于终止本轮所有次循环,即不执行本次循环中break后面的语句,直接退出循环;

continue是用于终止本轮本次循环,即本次循环中continue后面的代码不执行,进行下一次循环的入口判断。

4.5 如何退出多重循环

在要退出到的地方起个别名,然后break XXX;

public class exit_many_xunhuan {public static void main(String[] args) {haha:for(int i=0;i<10;i++) {for(int j=0;j<10;j++) {System.out.println("i="+i+" , j="+j);if (i==5 && j==5) {break haha;}}}}
}

补充:如何判断用户输入类型

import java.util.Scanner;public class panduan_input_leixing {public static void main(String[] args) {System.out.println("请输入一个数字:");Scanner input = new Scanner(System.in);//在接收输入之前判断输入的类型是否为intif(input.hasNextInt()) {int num = input.nextInt();System.out.println("你输入的是:"+num);}else {System.out.println("你输入的类型不是int");}}
}

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

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

相关文章

查看外文期刊的刊名、刊号、刊期

外文期刊刊号即ISSN&#xff0c;由8位数字组成。8位数字分为前后两段各4位&#xff0c;中间用连接符相连&#xff0c;格式如下&#xff1a; ISSN XXXX-XXXX 第一&#xff1a;可以在Web of Science里面查http://www.webofscience.com/ 第二&#xff1a;可以在EI上搜索论文&…

城市大脑与智慧城市前沿趋势 主题论坛 |未来科技大讲堂 第12期

近年来&#xff0c;智慧城市建设出现新的动向&#xff0c;包括城市大脑、城市云脑、城市超级大脑、城市超脑、城市神经网络等“泛城市大脑”概念也大量涌现。杭州、上海、北京、广州等城市各自提出和开展了不同城市大脑建设方案&#xff0c;其中上海市开展了以建设城市神经元系…

问题解决:使用angularjs、ionic框架如何实现返回上一页并刷新

普通的js返回并刷新这里就不多说了&#xff0c;百度就有很多方法。 下面说的是使用了angularjs、ionic开发的一个手机app中使用的一个返回上一页并刷新的方法。 场景&#xff1a;回复的页面是单独的&#xff0c;点击保存回复后会回到上一个页面&#xff0c;此时上一个页面会显示…

JavaSE——数组基础(创建格式、下标、获取长度、常见问题、多维数组)

第4节 数组 一、概述 数组是相同数据类型的多个数据的容器。这些元素按线性顺序排列。所谓线性顺序是指除第一个元素外&#xff0c;每一个元素都有唯一的前驱元素&#xff1b;除最后一个元素外&#xff0c;每一个元素都有唯一的后继元素。&#xff08;“简单理解就是&#xff…

MATLAB将颜色反转

如下图&#xff1a; 若需要将其转换为灰度图&#xff0c;则用colormap(gray)&#xff1a; 但若想将上面那幅灰度图颜色反转&#xff0c;即白色部分变黑&#xff0c;黑色部分变白&#xff0c;则用colormap(flipud(gray))&#xff1a;

AR/VR逐渐回暖 联合安防步入未来

来源&#xff1a;VR每日必看2019年&#xff0c;AR/VR市场在走过萌芽、兴起、狂热与泡沫破灭之后&#xff0c;开始逐渐复苏&#xff0c;相关芯片、屏幕、传感器等关键零部件也取得了不少进展&#xff0c;行业有望再次迎来高速增长。相较于C端市场&#xff0c;在B端&#xff0c;A…

使用python高通滤波器时报错numpy.linalg.linalg.LinAlgError: Singular matrix

原因是低通滤波器的阶数和高通滤波器一致造成的&#xff0c;因为我先使用了六阶低通滤波器&#xff0c;然后使用了六阶高通滤波器&#xff0c;改变一下高通滤波器的阶数即可

C# 中 ref 和out 的区别

out 参数前必须先为其赋值&#xff0c;即必须由被调用方为其赋值。 class TestOut {static void FillArray(out int[] arr){// Initialize the array:arr new int[5] { 1, 2, 3, 4, 5 };}static void Main(){int[] theArray; // Initialization is not required// Pass the ar…

JavaSE——面向对象基础(思想、类与对象、构造方法、重载、匿名对象)

第1节 面向对象基础 一、面向对象思想 1.1 概述 面向对象&#xff08;Object Oriented&#xff09;是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发&#xff0c;是一种对现实世界理解和抽象的方法&#xff0c;是计算机编程技术发展到一定阶段的产物。面向对…

谷歌发布颠覆性研究:不训练不调参,AI自动构建超强网络,告别炼丹一大步...

来源&#xff1a;凹非寺 机器学习全靠调参&#xff1f;这个思路已经过时了。谷歌大脑团队发布了一项新研究&#xff1a;只靠神经网络架构搜索出的网络&#xff0c;不训练&#xff0c;不调参&#xff0c;就能直接执行任务。这样的网络叫做WANN&#xff0c;权重不可知神经网络。它…

JavaSE——面向对象进阶(封装、this、static、代码块、包、权限修饰符、main方法详解)

第2节 面向对象进阶 一、封装与private 概述&#xff1a; 封装的意义在于保护或者防止代码&#xff08;数据&#xff09;被我们无意中破坏。保护成员属性&#xff0c;不让类以外的程序直接访问和修改。封装原则&#xff1a; 隐藏对象的属性和实现细节&#xff0c;仅对外公开访…

使用python的butter带通滤波器时出现RuntimeWarning

RuntimeWarning: invalid value encountered in reduce ret umr_sum(arr, axis, dtype, out, keepdims) RuntimeWarning: overflow encountered in reduce ret umr_sum(arr, axis, dtype, out, keepdims) 原因是butter带通滤波器的阶数过高&#xff0c;降低滤波器阶数…

孙正义:互联网流量将转化为智能AI流量,我的时代终于来了

“今后&#xff0c;增加软银集团的股东价值的成长引擎是什么呢&#xff1f;从上面的营业利润的增长来看&#xff0c;SVF&#xff08;软银愿景基金&#xff09;贡献了80%。SVF是SoftBank2.0最重要的经营引擎。首先&#xff0c;大约2年时间&#xff0c;SVF的投资对象已经超过了80…

lucene索引创建

1、创建Directory Directory directoryFSDirectory.open(new File("D:/eclipse-jee-mars-1-win32-x86_64/lucenefile/index01")); 2、创建IndexWriter IndexWriterConfig indexWriterConfignew IndexWriterConfig(Version.LUCENE_35, new StandardAnalyzer(Version.L…

JavaSE——面向对象高级(继承、final关键字、抽象类与接口、多态、Object类、内部类、包装类、可变参数)

第3节 面向对象高级 一、继承 1.1 概述和使用 继承是java面向对象编程技术的一块基石&#xff0c;因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为&#xff0c;使得子类对象&#xff08;实例&#xff09;具有父类的实例域和方法&#xff0c;或子类从父类继…

word的公式后加编码后自动变小

如图所示&#xff0c;在公式后面加编码后公式也变小了&#xff1a; 加编码前&#xff1a; 加编码后&#xff1a; 采用样式分隔符&#xff08;Ctrlaltenter&#xff09;即可解决&#xff0c;输完公式后&#xff0c;按enter转行&#xff0c;输入你要的东西&#xff08;编号什么的…

人工智能70年:科幻和现实的交融

文章素材来源&#xff1a;BBC图片来源&#xff1a;网络【导读】人类飞跑着进入人工智能&#xff08;AI&#xff09;时代。粗略估算现在人们日常生活中有20多种寻常的AI&#xff0c;从垃圾邮件过滤器到叫车软件。AI被分为两类&#xff0c;这些执行具体任务的AI属于“弱人工智能”…

vim 插件之commentary

下载地址 http://www.vim.org/scripts/script.php?script_id3695 如果是使用vundle来管理这个插件的话&#xff0c;你可以添加如下配置 tpope/vim-commentary 这个插件可以根据你当前打开的文件类型&#xff0c;来选择相应的注释方式。 使用的命令是 \\位移 比如&#xff0c;…

python保存的图片不完整

当图例在图外时&#xff0c;用plt.savefig保存的图片图例只保存了一半&#xff0c;在plt.savefig中加入“ bbox_inches tight”参数即可 plt.savefig(path, bbox_inches tight)

JavaSE——异常处理(异常简介、try-catch-finally、throws、throw)

第4节 异常处理 异常处理学习的目标&#xff1a; 明确说明是异常&#xff08;重点&#xff09; 能辨识出常见的异常及其含义&#xff08;熟悉&#xff09; 理解异常产生的原理&#xff08;了解&#xff09; 能处理异常&#xff08;重点&#xff09; 能够自定义异常&#x…