java控制流学习
java流程控制学习
Scanner对象
概念
1、通过Scanner类实现程序和人的交互,通过它获取到用户的输入。java.util.Scanner是java5的特征。
我们可以通过Scanner类获取用户的输入。
2、基本语法
Scanner s = new Scanner(System.in);
3、通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据。
代码展示
键盘输入完毕后,点击Enter表示完成输入。
通过以下方法获取输入值。
1、next()获取输入的数据遇到空格,则结束,空格后的值不能获取到。
用hasNext()方法判断用户是否输入值。
String str = scanner.next(); 程序执行后,会保持运行状态,这句代码等待用户输入值,点击Enter键结束后才会执行下一句。
// 创建一个扫描器对象,用户接收键盘数据
// System.in表示输入,键盘输入数据传给Scanner类,使用scanner变量引用
Scanner scanner = new Scanner(System.in);
// 判断用户是否输入字符串
if(scanner.hasNext()) {
// 程序执行后,会保持运行状态,这一句等待用户输入值,点击Enter结束后才会执行下一句
String str = scanner.next();
// 若输入12 45,结果为12,遇到空格后结束
System.out.println("使用next结果为:" + str);
}
// 凡是属于IO(输入输出)流的类如果不关闭会一直占用资源,要养成关闭的习惯
scanner.close();
2、nextLine()方法获取点击Enter前的所有数据。
Scanner scanner = new Scanner(System.in);
// 判断用户是否输入字符串
if(scanner.hasNextLine()) {
String str = scanner.nextLine();
// 若输入ab cd,结果为ab cd
System.out.println("使用nextLine结果为:" + str);
}
scanner.close();
两个方法的特征:
next()
1、一定要读取到有效字符后才可以结束输入。
2、遇到空格,则结束,只能获取空格前的字符串
3、next()不能输入带有空格的字符串
nextLine()
1、以Enter为结束符,可以获取到点击Enter前输入的所有字符。
2、可以获得空格和空格之后的字符。
Scaner进阶
指定输入的类型。如:指定输入的数字类型有效。
Scanner scanner = new Scanner(System.in);
double sum = 0;
int n = 0;
System.out.println("请输入数字类型,输入其他类型值加Enter未结束:");
// 只有输入不是数字类型后才能结束while循环,
// nextDouble只能获取到数字类型的值
while(scanner.hasNextDouble()) {
double a = scanner.nextDouble();
sum = sum + a;
n++;
}
System.out.println("输入的数值的个数为:" + n);
System.out.println("输入值的平均值为:" + sum/n);
// 凡是属于IO(输入输出)流的类如果不关闭会一直占用资源,要养成关闭的习惯
scanner.close();
顺序结构
java的基本结构就是顺序结构,除非特别指明,否则,就按照顺序一句一句执行。
顺序结构是任何一个算法都离不开的一种基本算法结构。
判断结构
判断一个东西是否可行,才去执行。程序用if语句表示判断结构。
语法
// 布尔表达式:指结果为true或者false的表达式
if(布尔表达式) {
// 布尔表达式为true时执行的括号里的语句
}
双选结构
判断后有两个结果。语法:
if(布尔表达式) {
// 布尔表达式为true时执行语句
} else {
// 布尔表达式为false时执行语句
}
多选择结构
有多个条件判断,只要有一个条件符合,后面的判断就不会再执行。
语法:
if (布尔表达1) {
// 符合布尔表达式1为true就执行这里
} else if (布尔表达2) {
// 符合布尔表达2为true就执行这里
} else if (布尔表达3) {
// 符合布尔表达式3为true就执行这里
} else {
// 都不符合布尔表达的1、2、3就执行这里
}
if (grade >= 90 && grade <=100) {
System.out.println("成绩优秀!");
} else if (grade >= 80 && grade < 90) {
System.out.println("成绩良好!");
} else if (grade >= 60 && grade <80) {
System.out.println("成绩合格!");
} else if (grade >= 0 && grade < 60) {
System.out.println("成绩不合格!");
} else {
System.out.println("输入的成绩错误!");
}
嵌套if结构
在判断语句if里面可以在使用判断语句if。
语法
if (布尔表达式1) {
// 布尔表达式1位true后执行
if (布尔表达式2) {
// 布尔表达式2位true后执行
}
}
Switch
switch是多选择结构。
switch语句中的变量类型可以是:
byte、short、int或者char,
从java SE 7 开始 switch支持字符串String类型。
同时case标签必须是字符串常量。
语法
// 表达式等于value值才会执行相应的语句
switch (表达式) {
case value1 :
// 表达式等于value1时执行这里的语句
// break:执行后结束直接跳出,不会再执行后面的代码。
break;
case value2 :
// 表达式等于value1时执行这里的语句
break;
default :
// 表达式都不等于前面的value值时,执行这里
}
char grade = 'B';
switch (grade) {
case 'A':
System.out.println("成绩优秀!");
break;
case 'B':
System.out.println("成绩良好!");
break;
case 'C':
System.out.println("成绩及格!");
break;
default :
System.out.println("不在成绩值的范围!");
}
switch中判断是否相当的本质还是通过数值去判断。字符串在unicode表中都是对应的数字,每个对象都有hascode(数字组成)值,用来与value的hascode比较,相等就执行该value下的语句。
java编译 java --- > class(字节码文件) --- > 反编译(IDEA)
查看java后生成的class文件,通过IDEA反编译,与原来java文件对比。
1、右键选择Project Structre
2、找到生成class文件的路径
3、找到class文件(我这里实在Demo03写代码,所以我选择复制Demo03.class)进行复制
找到IDEA中当前文件的所在目录
1、选中文件右键
2、选择Show in Explorer 打开该java文件的目录
3、将class文件复制粘贴
字符的本质还是数值,最终的判断还是通过数值进行判断。
循环结构
While
1、while是最基本的循环,它的语法为:
while(布尔表达式) {
// 布尔表达式为true执行循环内容
}
2、只要布尔表达式为true,循环就会一直执行下去。
3、我们大多数情况下都会让循环停止,需要一个让表达式为false的方式结束循环。
用while计算1~100
int sum = 0;
int i = 1;
// 只要i小于等于100就会一直执行while里面的语句
while(i <= 100) {
sum = sum + i;
i++;
}
// 当while中i大于100就会结束while循环,执行下一句代码。
System.out.println("结构和为:" + sum);
do~while
1、do...while循环和while循环相似,不同的是do...while循环至少会执行一次。
do {
// 执行代码
} while(布尔表达式);
While和do...while的区别
1、While先判断后执行,do...while先执行后判断。
2、do...while保证循环至少执行一次。
for循环
1、for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。语法如下:
for(初始化;布尔表达式;更新) {
// 代码语句
}
案列:输出1~100的整数和
int sum = 0;
for (int i = 1;i <= 100;i++) {
sum = sum + i;
}
练习1:输出1~100之间的奇数和与偶数和
int odd = 0; // 奇数
int even = 0; // 偶数
for (int i = 1;i <= 100;i++) {
if (i%2 == 0) {
even = even +i;
} else {
odd = odd +i;
}
}
System.out.println("奇数和为:" + odd);
System.out.println("偶数和为:" + even);
练习2:输出100内能被5整除的值,每行输出3个值
for (int i=1;i <= 100;i++) {
if(i%5 == 0) {
System.out.print(i + " ");
}
if(i%(5*3) == 0) {
System.out.println();
}
}
练习3:打印九成九乘法表
// 练习:打印九成九乘法表
// 第一行打印1*1=1,结束后分行。
// 第二行打印1*2=2,2*2=3,结束后分行。
// 第三行...,
for (int i = 1;i <= 9;i++) {
for (int j = 1;j <= i; j++) {
System.out.print(j + "*" + i + "=" + (j*i) + "\t");
}
System.out.println();
}
练习4:打印三角形
// 打印三角形
for (int i = 1;i <= 5;i++) {
for (int j = 5;j >= i;j--) {
System.out.print(" ");
}
for (int n = 1;n <= i;n++) {
System.out.print("*");
}
for (int m = 1;m < i;m++) {
System.out.print("*");
}
System.out.println();
}
增强for循环
1、java5引入一种主要用于数组或集合的增强for循环。语法如下
for (声明语句 : 表达式) {
// 执行代码
}
2、声明语句:声明新的局部变量,变量类型必须和数组元素的类型匹配。作用域(即可以使用的范围)限定在循环语句块(即在{}的代码),其值与此时的数组元素值相等。
3、表达式:要访问的数组名,或者返回值为数组的方法。
int[] num = {10,20,30,40,50,60};
// 数组num的值会一个一个的传个a,全部传完后结束循环
for (int a : num) {
System.out.println(a);
}
System.out.println("=====================");
// 相当于
int a;
for (int i = 0;i < num.length;i++) {
a = num[i];
System.out.println(a);
}
break和continue
1、break在任何循环语句的主题部分,break用于强制退出结束循环。(主要用于switch中)
2、continu语句用于循环语句体中,用于终止当前这一轮的循环,但循环没有结束,会执行下一轮的循环。
int i = 0;
while (i < 5) {
i++;
if (i == 3) {
// 结束while循环,跳出执行下一句
break;
}
System.out.print(i + " ");
}
// 结果为1 2
int j = 0;
while (j < 5) {
j++;
if (j == 3) {
// 直接结束本次循环,会在执行下一个循环
continue;
}
System.out.print(j + " ");
}
// 结果为1 2 4 5
学习观看的视频为:狂神说java零基础学习
java控制流学习的更多相关文章
- 《深入Java虚拟机学习笔记》- 第16章 控制流
<深入Java虚拟机学习笔记>- 第16章 控制流
- Java基础学习心得笔记
对于很多只会C语言的初学者而言,面对java基础语法学习,反而感觉很难,其实其中最大的问题不是语法难,而是一种编程思想的转变.面向过程就是把你的代码封装成函数,然后依次去做一件事情,面向过程是把你要做 ...
- Java的学习之路
记事本 EditPlus eclipse Java的学习软件,已经系统性学习Java有一段时间了,接下来我想讲一下我在Java学习用到的软件. 1.第一个软件:记事本 记事本是Java学习中最基础的编 ...
- Java多线程学习笔记
进程:正在执行中的程序,其实是应用程序在内存中运行的那片空间.(只负责空间分配) 线程:进程中的一个执行单元,负责进程汇总的程序的运行,一个进程当中至少要有一个线程. 多线程:一个进程中时可以有多个线 ...
- Java Web 学习路线
实际上,如果时间安排合理的话,大概需要六个月左右,有些基础好,自学能力强的朋友,甚至在四个月左右就开始找工作了.大三的时候,我萌生了放弃本专业的念头,断断续续学 Java Web 累计一年半左右,总算 ...
- Java基础学习-- 继承 的简单总结
代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...
- 20145213《Java程序设计学习笔记》第六周学习总结
20145213<Java程序设计学习笔记>第六周学习总结 说在前面的话 上篇博客中娄老师指出我因为数据结构基础薄弱,才导致对第九章内容浅尝遏止地认知.在这里我还要自我批评一下,其实我事后 ...
- [原创]java WEB学习笔记95:Hibernate 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Java多线程学习(转载)
Java多线程学习(转载) 时间:2015-03-14 13:53:14 阅读:137413 评论:4 收藏:3 [点我收藏+] 转载 :http://blog ...
随机推荐
- 普通web项目一直无法访问页面,直接报404
错误:普通web项目一直无法访问页面,直接报404 原因:写了一个过滤乱码的类: 而在类上加了WebServlet注解,其实应该是WebFilter注解, 总结:基础不扎实,有些东西只会用,而不知道原 ...
- rabbitmq-direct(直接交换模式)
生产者和消费者,具有相同的交换机名称(Exchange).交换机类型和相同的密匙(routingKey),那么消费者即可成功获取到消息.(PS:相对比只要交换机名称即可接收到消息的广播模式(fanou ...
- 深入了解Element Form表单动态验证问题 转载
随风丶逆风 2020-04-03 15:36:41 2208 收藏 3 分类专栏: Vue 随笔 文章标签: 动态验证 el-form elementUI 表单验证 版权 在上一篇<vue ...
- ARC下的内存管理
1.ARC下单对象内存管理 局部变量释放对象随之被释放 int main(int argc, const char * argv[]) { @autoreleasepool { Person *p = ...
- LBS应用之 根据一点的经纬度实现附近点的查询
这年头和LBS相关的应用越来越火.从foursquare的热闹程度就可见一般(什么,没听过 foursquare-. 哥们,你 out 了).和 LBS有关的应用一般都包括一些共同的操作,最常见的一个 ...
- webfunny前端系统:如何解决警报设置触发常见问题
大家好,经常会有小伙伴在使用webfunny监控系统中,遇到无法触发警报的问题,其实都是一些配置上的疏漏,在这里给大家总结一下: PS:只要消息中心里有警报,则说明触发机制没有问题.其他方式没有触发, ...
- C++的Copy Elision导致的奇怪问题
最近写设计模式作业的时候, 有一个作业是实现装饰器模式 (Decorator Pattern), 由于我不会 Java, 所以只能用 C++ 来实现 在这个背景下, 会有简单(表意)的几个类, 如下: ...
- Flask中本地栈的使用
4种上下文变量 承接上一篇内容.当一个请求到来时,除了request被封装成全局变量之外,还有三个变量也是同样被封装成全局变量,那就是current_app.g.session.上面4个变量之所以能够 ...
- Understanding JSON Schema
json schema 在线校验器 译自:Understanding JSON Schema { "type": "object", "propert ...
- bash初始化文件详解
目录 交互式(interactive)shell/非交互式(non-interactive)shell 如何启动一个交互式shell/非交互式shell 如何判断是否为交互式shell 登录式(log ...