零基础学习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,没有想象的那么困难,也没有想象的那么容易.在刚接触云计算,曾经想过培训,但是培训机构的选择就让我很纠结.所以索性就自己学习了.整个过程整理一下,给大家参考,欢迎讨论,共同学习. ...
随机推荐
- WPF进阶技巧和实战03-控件(3-文本控件及列表控件)
系列文章链接 WPF进阶技巧和实战01-小技巧 WPF进阶技巧和实战02-布局 WPF进阶技巧和实战03-控件(1-控件及内容控件) WPF进阶技巧和实战03-控件(2-特殊容器) WPF进阶技巧和实 ...
- GoLang设计模式12 - 空对象模式
空对象设计模式是一种行为型设计模式,主要用于应对空对象的检查.使用这种设计模式可以避免对空对象进行检查.也就是说,在这种模式下,使用空对象不会造成异常. 空对象模式的组件包括: Entity:接口,定 ...
- Swift进阶-内存管理
本文的主要目的是探索 RefCount 的内存结构及强/弱引用计数管理 Swift 中也是采用 ARC 编译器自动内存管理机制. Swift 对象的内存结构是 HeapObject, 有两个属性 Me ...
- 某企业桌面虚拟化项目-Citrix虚拟桌面解决方案
xxx桌面虚拟化项目Citrix解决方案 xxx桌面虚拟化项目 Citrix解决方案 1 项目背景 秉承"尊重个性.创造价值.贡献于社会"的企业理念和开拓创新的精神,xxx所制造. ...
- 问题 L: Yougth的最大化
题目描述 Yougth现在有n个物品的重量和价值分别是Wi和Vi,你能帮他从中选出k个物品使得单位重量的价值最大吗? 输入 有多组测试数据 每组测试数据第一行有两个数n和k,接下来一行有n个数Wi和V ...
- web页面自动化总结。selenium
web自动化测试终篇:总结我理解的ui自动化,整理归纳: https://blog.csdn.net/CCGGAAG/article/details/89669592 web页面自动化知识点 1.we ...
- 菜鸡的Java笔记 第十四 String 类常用方法
/*String 类常用方法 将所有String类的常用方法全部记下来,包括方法名称,参数作用以及类型 一个成熟的编程语言,除了它的语法非常完善之外,那么也需要提供有大量的开发类库 ...
- 『学了就忘』Linux软件包管理 — 48、给源码包打补丁
目录 1.补丁的生成 2.补丁的打入 在以前的软件源码包,需要打补丁的时候比较多.现在的源码包很少进行打补丁了,因为根据需求安装不同的版本即可,比较商业化了.(也就是知道如何给源码包打补丁就可以了,了 ...
- [hdu6145]Arithmetic of Bomb II
对于题中的"normal expression"(仅含加减乘和无前导0的非负整数,无括号)的计算,实际上并不需要通常的表达式求值,而可以用下述方式计算-- 维护三元组$(a,b,c ...
- 『与善仁』Appium基础 — 14、Appium测试环境搭建
目录 1.Appium测试环境搭建整体思路 (1)Android测试环境搭建 (2)Appium测试环境搭建 (3)测试脚本语言的环境搭建 2.Appium在Android端和IOS端的工作流程 (1 ...