零基础学习java------day4------流程控制结构
1. 顺序结构
代码从上往下依次执行
2. 选择结构
也叫分支结构,其会根据执行的结果选择不同的代码执行,有以下两种形式:
if 语句
switch 语句
2.1 if 语句
2.1.1 if语句的第一种形式
格式:
- if(关系表达式){
- 语句体;
- }
- 执行流程:
- 首先判断关系表达式看其结果是true还是false
- 如果是true就执行语句体
- 如果是false就不执行语句体
案例
- 1 package com._51doit.javase.day04;
- 2
- 3 import java.util.Scanner;
- 4
- 5 public class ifDemo1 {
- 6 public static void main(String[] args) {
- 7 Scanner sc = new Scanner(System.in);
- 8 System.out.println("请输入第一个整数:");
- 9 int a = sc.nextInt();
- 10 if(a > 3) {
- 11 System.out.println("哈哈");
- 12
- 13 }
- 14 System.out.print("嘿嘿");
- 15 }
- 16
- 17
- 18 }
执行结果:
if 语句的注意事项
if 语句中的大括号是可以省略的,一旦省略,只控制到第一条语句结束(只到第一个分号为止)
我们在开发的时候,千万别这样写,出问题的话,很难debug
例如:代码如下
- package com._51doit.javase.day04;
- public class IfDemoTest {
- public static void main(String[] args) {
- if(3==4)
- System.out.println("哈哈");
- System.out.println("呵呵");
- }
- }
上述代码运行结果为 呵呵
解释:if只能控制到第一条语句结束(即if后的第一个分号为止)
若将if( 3==4) 改成 if(3==4); 加了个分号,运行的结果为 哈哈 呵呵
分号“;”相当于{ ;}(其代表空语句,表示砂蜜豆没有)
练习:
从键盘录入两个整数,判断两个数据是否相等,
如果是就输出:相等,
不是,输出不相等
1. 使用if 语句完成
2. 使用一条if 语句完成
- public class IfTest {
- public static void main(String[] args) {
- //1. 从键盘录入两个整数
- Scanner sc = new Scanner(System.in);
- System.out.println("请输入第一个整数");
- int a = sc.nextInt();
- System.out.println("请输入第二个整数");
- int b = sc.nextInt();
- //2. 使用if语句做判断
- /*if(a == b) {
- System.out.println("相等");
- }
- if(a != b) {
- System.out.println("不相等");
- }*/
- //使用一条语句实现
- String re ="相等";
- if(a!=b) {
- re = "不相等";
- }
- System.out.println(re);
- }
- }
2.1.2 if语句的第二种形式
格式
- if(关系表达式) {
- 语句体1;
- }else {
- 语句体2;
- }
- 执行流程
首先判断关系表达式看其结果是true 还是false
如果是true 就执行语句体1
如果是false 就执行语句体2
案例:
- /**
- 键盘录入一个整数,判断数据是奇数还是偶数
- */
- package com._51doit.javase.day04;
- import java.util.Scanner;
- public class IfDemo2 {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- System.out.println("请输入一个数据");
- int a = sc.nextInt();
- if(a%2==0) {
- System.out.println("偶数");
- }else {
- System.out.println("奇数");
- }
- }
- }
2.1.3 if语句的第三种形式
格式
- if(关系表达式1) {
- 语句体1;
- }else if (关系表达式2) {
- 语句体2;
- }
- …
- else {
- 语句体n+1;
- }
- 流程:
- 首先判断关系表达式1 看其结果是true 还是false
- 如果是true 就执行语句体1
- 如果是false 就继续判断关系表达式2 看其结果是true 还是false
如果是true 就执行语句体2
如果是false 就继续判断关系表达式…看其结果是true 还是false
如果没有任何关系表达式为true,就执行语句体n+1。
案例
- public class IfDemo4 {
- //从键盘录入一个整数,判断是正数,负数,还是0
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- System.out.println("请输入一个整数");
- int a = sc.nextInt();
- if(a>0) {
- System.out.println("正数");
- }else if(a==0) {
- System.out.println("是0");
- }else {
- System.out.println("负数");
- }
- }
- }
练习
1. 键盘录入x 的值,计算出y 的并输出。
x>=3 y = 2x + 1;
-1<=x<1 y = 2x;
x<-1 y = 2x – 1;
代码如下:
- 1 package com._51doit.javase.day04;
- 2 import java.util.Scanner;
- 3 public class IfTest2 {
- 4 public static void main(String[] args) {
- 5 Scanner sc = new Scanner(System.in);
- 6 System.out.println("请输入x的值");
- 7 int x = sc.nextInt();
- 8 if(x>=3) {
- 9 System.out.println("y="+(2*x+1));
- 10 }else if(x<1&x>=-1) {
- 11 System.out.println("y="+2*x);
- 12 }else if(x<-1) {
- 13 System.out.println("y="+(2*x-1));
- 14 }else {
- 15 System.out.println("x不合法");
- 16 }
- 17 }
- 18 }
2.2 switch语句
格式
- switch(表达式){
- case 常量值1:
- 语句体1;
- break;
- case 常量值2:
- 语句体2;
- break;
- ...
- default:
- 语句体n+1;
- break;
- }
执行流程:
1. 首先计算出表达式的值
2. 其次,和case做比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束,否则一直往下进行
3. 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
表达式的类型:
byte,short,int, char, 枚举 jdk7以后(新加):String
案例:
根据键盘录入的数值1,2,3,.....7 输出对应的星期一,星期二,。。。星期日
- package com._51doit.javase.day04;
- import java.util.Scanner;
- public class SwithDemo {
- public static void main(String[] args) {
- // 输入1-7中的一个数,分别代表周一到周日
- Scanner sc = new Scanner(System.in);
- System.out.println("请输入一个整数");
- int day = sc.nextInt();
- switch(day) {
- case 1:
- System.out.println("Monday");
- break;
- case 2:
- System.out.println("Tuesday");
- break;
- case 3:
- System.out.println("Wednesday");
- break;
- case 4:
- System.out.println("Thursday");
- break;
- case 5:
- System.out.println("Friday");
- break;
- case 6:
- System.out.println("Saturday");
- break;
- case 7:
- System.out.println("Sunday");
- break;
- default:
- System.out.println("Are you kidding?");
- }
- }
- }
注意事项:
1. case后面只能跟常量,不能跟变量
2. 多个case后面的常量值不能相同
3. case的顺序没有要求,可以放到任意位置
4. default也可以放在任意位置
5. default可以不要
6.break可以省略,如果省略的话,代码会继续向下执行,不管下面的case是否匹配成功,一直执行到再次遇到break,或者是执行到了switch语句结束
如若将所有break不写上面代码运行结果会变成如下,当输入1时:1的结果连同其后面的结果都会打印出来,当输入2时,21的结果连同其后面的结果都会打印出来(1的不会)
7 switch语句何时结束:遇到break,或者代码执行到了switch语句的最后
3. 循环结构
让一段代码反复执行很多次
3.1 for 循环
- for(初始化语句;判断条件语句;控制条件语句) {
- 循环体语句体;
- }
执行流程:
(1)执行初始化语句
(2)执行判断条件语句,看其结果是true还是false,如果是false,循环结束
(3)执行循环体语句
(4)执行控制条件语句
(5)回到(2)继续
案例:
1 打印100句话
- package com._51doit.javase.day04;
- // 打印100句话
- public class ForDemo{
- public static void main(String[] args) {
- for(int i=1;i<100;i++) {
- System.out.println("学大数据的我");
- }
- }
- }
2. 求1-100奇数和偶数和
- package com._51doit.javase.day04;
- public class ForDemo{
- public static void main(String[] args) {
- int oldNumberCount = 0;
- int evenNumberCount = 0;
- for(int i=1;i<=100;i++) {
- if(i%2==0) {
- evenNumberCount += i;
- }else {
- oldNumberCount += i;
- }
- }
- System.out.println("1-100中的偶数和为"+evenNumberCount);
- System.out.println("1-100中的奇数和为"+oldNumberCount);
3. 请统计1-1000之间分别满足如下条件的数据有多少
对3整除余2;对5整除余3;对7整除余2;
- /*
- 请统计1-1000之间分别满足如下条件的数据有多少个
- 对3整除余2;对5整除余3;对7整除余2;
- **/
- package com._51doit.javase.day04.loop;
- public class ForTest {
- public static void main(String[] args) {
- int a=0;
- int b=0;
- int c=0;
- for(int i=1; i<=1000; i++) {
- if(i%3 == 2) {
- a += 1;
- }
- if(i%5 ==3 ) {
- b += 1;
- }
- if(i%7 == 2) {
- c += 1;
- }
- }
- System.out.println(a);
- System.out.println(b);
- System.out.println(c);
- }
- }
注意,此处不能用else if(要用if),因为else if只要满足条件,后面的代码就不会运行了,但有些数据可能既满足条件1也满足条件2或3,这样就会漏算
3.2 while循环
格式:
- 初始化语句;
- while(判断条件语句) {
- 循环体语句体;
- 控制条件语句;
- }
案例
1. 打印1-100的数
- package com._51doit.javase.day04.loop;
- public class WhileDemo {
- public static void main(String[] args) {
- int i = 1;
- while(i <= 100) {
- System.out.println(i);
- i++;
- }
- }
- }
2. 一座山峰的高度为8848m,加入有一张足够大的纸,厚度为0.01m,请问需要折多少次才能保证纸的厚度不低于山峰的高度
- /*
- 一座山峰的高度为8848m,加入有一张足够大的纸,厚度为0.01m,请问需要折多少次才能保
- 证纸的厚度不低于山峰的高度
- **/
- package com._51doit.javase.day04.loop;
- public class WhileDemo2 {
- public static void main(String[] args) {
- double hight = 0.01;
- int num = 0;
- while(hight < 8848) {
- hight *=2;
- num++;
- }
- System.out.println(num);
- }
- }
两种循环的对比:
for 循环适合针对一个范围判断进行操作
while 循环适合不知道循环的次数,或者要求循环的次数
零基础学习java------day4------流程控制结构的更多相关文章
- 音乐出身的妹纸,零基础学习JAVA靠谱么
问:表示音乐出身的妹纸一枚 某一天突然觉得身边认识的是一群程序员 突然想 要不要也去试试... 众好友都觉得我该去做个老师,可是我怕我会误人子弟,祸害祖国下一代..... 要不要 要不要 学Ja ...
- 总结了零基础学习Java编程语言的几个基础知识要点
很多Java编程初学者在刚接触Java语言程序的时候,不知道该学习掌握哪些必要的基础知识.本文总结了零基础学习Java编程语言的几个基础知识要点. 1先了解什么是Java的四个方面 初学者先弄清这 ...
- 怎么规划一个零基础学习Unity3D的“方法”或者“流程”?
具体出处:https://www.zhihu.com/question/35542990 我只是一个计算机相关专业毕业的,已经掌握了基础的C#并开发过.net的.目前突然心血来潮对unity3D有兴趣 ...
- 零基础学Java第二节(运算符、输入、选择流程控制)
本篇文章是<零基础学Java>专栏的第二篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 第一章 运算符 1.1 算术运算符的概述和用法 运算符 对常量和变 ...
- Salesforce 集成篇零基础学习(一)Connected App
本篇参考: https://zhuanlan.zhihu.com/p/89020647 https://trailhead.salesforce.com/content/learn/modules/c ...
- 零基础学Java第三节(基本输入输出)
本篇文章是<零基础学Java>专栏的第三篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号[编程攻略] Java程序的命令行参数 我们可以 ...
- 如何从零基础学习VR
转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...
- 【零基础学习iOS开发】【转载】
原文地址:http://www.cnblogs.com/mjios/archive/2013/04/24/3039357.html 本文目录 一.什么是iOS 二.主流手机操作系统 三.什么是iOS开 ...
- 李洪强iOS开发之【零基础学习iOS开发】【01-前言】01-开篇
从今天开始,我就开始更新[零基础学习iOS开发]这个专题.不管你是否涉足过IT领域,也不管你是理科生还是文科生,只要你对iOS开发感兴趣,都可以来阅读此专题.我尽量以通俗易懂的语言,让每个人都能够看懂 ...
- 零基础学习hadoop到上手工作线路指导
零基础学习hadoop,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了.整个过程整理一下,给大家参考,欢迎讨论,共同学习. ...
随机推荐
- Python pip 和pip3区别 联系
python 有python2和python3的区别 那么pip也有pip和pip3的区别 大概是这样的 pip是python的包管理工具,pip和pip3版本不同,都位于Scripts\目录下: 如 ...
- cf20B Equation(认真仔细题)
题意: 求AX^2+BX+C=0的根 思路: 考虑到A,B,C所有可能的情况 代码: double a,b,c; int main(){ cin>>a>>b>>c; ...
- BQ40Z50固件怎么升级?告诉你BQ系列芯片内部结构和升级方法
一 BQ芯片初步认识 包括BQ40Z50在内,BQ系列电池管理芯片看起来是一个芯片,其实芯片里面封装了两个die.一个是MCU部分负责计算和控制,其采用的是bqBMP内核的16位处理器:另外一个die ...
- 记一次 Java 导出大批量 Excel 优化
常用的excel导出方案,详情见Spring Boot 入门(十二):报表导出,对比poi.jxl和esayExcel的效率,其中jxl.esayEscel 底层都是基于 poi,它们仅仅是对 poi ...
- 权限控制-RBAC(Role-Based Access Control)
RBAC是基于角色的权限访问控制,在RBAC中角色与权限相连,用户通过成为某个角色而得到角色的权限,这就极大的简化了权限的管理,用户和角色多对多,角色和权限多对多,由此产生用户表.角色表.权限表,用户 ...
- centos7.2安装rabbitmq教程
环境: centos7.2 rabbitmq依赖erlang,需要先安装erlang 1 安装erlang rpm -Uvh https://download.fedoraproject.org/pu ...
- js 增删节点
<html><head><meta http-equiv="Content-Type" content="text/html; charse ...
- 在linux 环境下 安装php
最近打算学写一个php 脚本~ 到了虚拟机环境上发现~没有环境. 只有老老实实去装一个php环境咯. 第一步 去官网下一个包 记得一定要下载tgz格式的 第二步~当然是传上虚拟机上咯~任意目录都可以. ...
- [cf1326F]Wise Men
对答案序列求一个高维后缀和,再通过差分将其解出,后者复杂度为$o(n2^{n})$ 对于求后缀和后的结果,即01序列仅要求1处有边(不要求0处没有边),那么也即要求将原图划分为若干条长度给定且没有公共 ...
- [hdu6598]Harmonious Army
网络流建图,首先将所有价值加起来,用最小割考虑要删掉多少个价值:源点向每一个士兵连流量为x的边,士兵向汇点连流量为y的边,每一对关系间连流量为z的边,考虑有方程x1+y2+z=x2+y1+z=a+c, ...