学习java流程控制和数组
2017-09-12 13:32
169 查看
一、程序的三种结构(基本的三种结构)
顺序结构:自上而下的逐行执行代码。
选择结构:根据逻辑判断,有选择的执行其中某部分代码。
循环结构:根据逻辑判断,重复执行某个代码块。
二、顺序结构程序设计
前面案例中代码块中没有用if、switch、for、while等的,都是顺序结构
三、分支(选择)结构程序设计
★if分支
◆单分支
语法:
if(表达式){
代码块;
}
说明:如果表达式的值为true,则执行代码块,否则不执行。
◆二路分支(双分支)
语法:
if(表达式){
代码块1;
}else{
代码块2;
}
说明:如果表达式的值为true,则执行代码块1,
如果表达式的值为false,则执行代码块2.
◆多路分支
语法:
if(表达式1){
代码块1;
}else if(表达式2){
代码块2;
}else if(表达式3){
代码块3;
}
…….
…….//中间可以有n个 else if
……..
else{//最后这个else可有可无
代码块n;
}
说明:
如果表达式1的值为true,则执行代码块1,如果表达1的值为false,则判断表达式2
如果表达式2的值为true,则执行代码块2,如果表达式2的值为false,则判断表达式3
如果表达式3的值为true,则执行代码块3,如果表达式3的值为false,则判断表达式4
…….…….如果都不成立,则进入else中执行代码块n。
★switch分支
switch是多分支语句
语法:
switch(表达式){
case 值1:代码块1;
break; //break不是必须的,根据情况而定
case 值2:代码块2;
break;
……
……
……
default:代码块n; //default可有可无
}
注意: JDK6 中表达式的类型只能为 byte short int char
JDK7中表达式的类型只能为 byte short int char String
说明:
根据switch后面表达式的值,去依次和case后面的值匹配,遇到匹配的就从这个case进入,执行后面的代码块,不再判断后面的case、default标签的值是否匹配,他会一直往下执行,直到遇到break才会停止。
如果没有遇到匹配的,就执行break后面的代码块。
注意: JDK6 中表达式的类型只能为 byte short int char
JDK7中表达式的类型只能为 byte short int char String
说明:
根据switch后面表达式的值,去依次和case后面的值匹配,遇到匹配的就从这个case进入,执行后面的代码块,不再判断后面的case、default标签的值是否匹配,他会一直往下执行,直到遇到break才会停止。
如果没有遇到匹配的,就执行break后面的代码块。
四、循环结构程序设计
★while循环
语法:
while(循环条件){
代码块/循环体;
}
说明:
首先判断循环条件是否为true,如果为true则进入循环体执行,执行完成后自动回到前面再次判断循环条件,如果为true则进入循环体执行,执行完成后又回到前面再次判断,依次循环,直到循环条件为false则循环结束。
★do…while循环
语法:
do{
代码块/循环体;
}while(循环条件);
说明:
首先进入循环体执行,执行完成后判断循环条件是否成立,如果条件成立回到前面再次执行循环体,执行完成又判断循环条件是否处理,如果条件成立回到前面执行循环体,依次循环,直到循环条件不成立,则循环截止。
★for循环
语法:
for(表达式1;表达式2;表达式3){
循环体;
}
说明:
表达式1:初始化变量
表达式2:循环条件
表达式3:循环增量
首先执行 表达式1 –》判断表达式2,如果表达式2成立,则执行循环体,循环体执行完成后,执行表达式3。执行完3,又判断表达式2是否成立….依次循环,直到表达式2不成立循环截止。
while 和 do…while的区别
public class Test1{
public static void main(String[] args){
int i = 101;
while(i<=100){
System.out.println(i);
i++;
}
}
}
运行结果:没有输出
public class Test1{
public static void main(String[] args){
int i = 101;
do{
System.out.println(i);
i++;
}while(i<=100);
}
}
运行结果:101
总结:while是先判断,再执行 do…while先执行,后判断
do…while至少执行一次。
五、分支、循环嵌套
★分支中嵌套分支结构
案例一:
a3e2
从键盘输入3个整数,输出其中最大的一个
import java.util.*;
public class Test1{
public static void main(String[] args){
int a,b,c;
Scanner s = new Scanner(System.in);
System.out.print("请输入一个整数:");
a = s.nextInt();
System.out.print("请输入一个整数:");
b = s.nextInt();
System.out.print("请输入一个整数:");
c = s.nextInt();
if(a>b){
if(a>c){
System.out.println(a);
}else{
System.out.println(c);
}
}else{
if(b>c){
System.out.println(b);
}else{
System.out.println(c);
}
}
}
}
★循环中嵌套分支结构
案例一: 输出1--100中能被3整除的数
public class Test1{
public static void main(String[] args){
for(int i=1;i<=100;i++){
if(i%3==0){
System.out.println(i);
}
}
}
}
★循环中嵌套循环结构
案例一:打印九九乘法表
public class Test1{
public static void main(String[] args){
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+i*j+"\t");
}
System.out.println();
}
}
}
六、循环的控制 break、continue
break语句除了可以用在switch语句中,还可以用在循环体中。在循环体中遇见break语句,立即结束循环,跳到循环外,执行循环结构后面的语句 。break语句用于结束整个循环。
continue语句用于结束本次循环,即在循环体中遇见continue语句,则循环体中continue语句后面的语句不会执行,接着进行下一次循环的判定。
案例一:
public class Test1{
public static void main(String[] args){
for(int i=1;i<=5;i++){
if(i==3){
break;
}
System.out.println(i);
}
}
}
七、数组、一维数组
数组是所有编程语言只用一种常用的数据结构,它用来存储多个相同类型的数据。
JAVA中的数组要求数组中元素的类型一致。一旦数组初始化完成,数组在内存中所占用的空间被固定下来,因此数组的长度是不可变的。
★数组的定义
类型[] 数组名;//常用 int[] a; double[] b;char[] c
类型 数组名[];// int a[]
★数组的初始化
◆静态初始化
初始化时由程序员显示的指定每个数组元素的初始值,由系统决定数组的长度。
eg1:
int[] a;
a = new int[]{1,2,3,4,5};
◆动态初始化
初始化时程序员只指定数组的长度,而不指定数组中元素的值,系统自动给数组分配初始值。
eg1:
int[] a;
a = new int[5];
★访问数组元素
数组中每个元素都有一个下标,下标从0开始:访问数组元素可以根据数组下标。
eg:
int[] a = {55,66,85,32,75};
55 ------------ a[0]
66 ------------ a[1]
85 ------------ a[2]
32 ------------ a[3]
75 ------------ a[4]
★数组的应用
案例:求多个数据的和
public class Test1{
public static void main(String[] args){
int[] a = {55,23,89,64,85};
int sum=0;
for(int i=0;i<=a.length-1;i++){
sum = sum+a[i];
}
System.out.println("总分="+sum);
}
}
八、二维数组、多维数组
●二维数组:
二维数组就是存放一维数组的数组,一个二维数组可以看做多个一维数组。
int a = 10;
int[] b = {10,20,30};//b看做多个a的集合 可以把 b[0]和a等价
int[][] c = {{10,20,30},{5,6,7}};//c可以看做b的集合 可以把c[0]和b等价 c[0][0]和a等价
// c[0] c[1] 一维数组
// c[0][0] 值
★数组的定义
类型[][] 数组名;//常用
in t[][] a;
类型 数组名[][];// int a[][]
★数组的初始化
◆静态初始化
初始化时由程序员显示的指定每个数组元素的初始值,由系统决定数组的长度。
eg1:
int[][] a;
a = new int[][]{{1,2,3},{4,5,6}};
◆动态初始化
初始化时程序员只指定数组的长度,而不指定数组中元素的值,系统自动给数组分配初始值。
eg1:
int[][] a;
a = new int[2][3]; //2代表a中有两个一维数组 3代表一维数组中有3个值
顺序结构:自上而下的逐行执行代码。
选择结构:根据逻辑判断,有选择的执行其中某部分代码。
循环结构:根据逻辑判断,重复执行某个代码块。
二、顺序结构程序设计
前面案例中代码块中没有用if、switch、for、while等的,都是顺序结构
三、分支(选择)结构程序设计
★if分支
◆单分支
语法:
if(表达式){
代码块;
}
说明:如果表达式的值为true,则执行代码块,否则不执行。
◆二路分支(双分支)
语法:
if(表达式){
代码块1;
}else{
代码块2;
}
说明:如果表达式的值为true,则执行代码块1,
如果表达式的值为false,则执行代码块2.
◆多路分支
语法:
if(表达式1){
代码块1;
}else if(表达式2){
代码块2;
}else if(表达式3){
代码块3;
}
…….
…….//中间可以有n个 else if
……..
else{//最后这个else可有可无
代码块n;
}
说明:
如果表达式1的值为true,则执行代码块1,如果表达1的值为false,则判断表达式2
如果表达式2的值为true,则执行代码块2,如果表达式2的值为false,则判断表达式3
如果表达式3的值为true,则执行代码块3,如果表达式3的值为false,则判断表达式4
…….…….如果都不成立,则进入else中执行代码块n。
★switch分支
switch是多分支语句
语法:
switch(表达式){
case 值1:代码块1;
break; //break不是必须的,根据情况而定
case 值2:代码块2;
break;
……
……
……
default:代码块n; //default可有可无
}
注意: JDK6 中表达式的类型只能为 byte short int char
JDK7中表达式的类型只能为 byte short int char String
说明:
根据switch后面表达式的值,去依次和case后面的值匹配,遇到匹配的就从这个case进入,执行后面的代码块,不再判断后面的case、default标签的值是否匹配,他会一直往下执行,直到遇到break才会停止。
如果没有遇到匹配的,就执行break后面的代码块。
注意: JDK6 中表达式的类型只能为 byte short int char
JDK7中表达式的类型只能为 byte short int char String
说明:
根据switch后面表达式的值,去依次和case后面的值匹配,遇到匹配的就从这个case进入,执行后面的代码块,不再判断后面的case、default标签的值是否匹配,他会一直往下执行,直到遇到break才会停止。
如果没有遇到匹配的,就执行break后面的代码块。
四、循环结构程序设计
★while循环
语法:
while(循环条件){
代码块/循环体;
}
说明:
首先判断循环条件是否为true,如果为true则进入循环体执行,执行完成后自动回到前面再次判断循环条件,如果为true则进入循环体执行,执行完成后又回到前面再次判断,依次循环,直到循环条件为false则循环结束。
★do…while循环
语法:
do{
代码块/循环体;
}while(循环条件);
说明:
首先进入循环体执行,执行完成后判断循环条件是否成立,如果条件成立回到前面再次执行循环体,执行完成又判断循环条件是否处理,如果条件成立回到前面执行循环体,依次循环,直到循环条件不成立,则循环截止。
★for循环
语法:
for(表达式1;表达式2;表达式3){
循环体;
}
说明:
表达式1:初始化变量
表达式2:循环条件
表达式3:循环增量
首先执行 表达式1 –》判断表达式2,如果表达式2成立,则执行循环体,循环体执行完成后,执行表达式3。执行完3,又判断表达式2是否成立….依次循环,直到表达式2不成立循环截止。
while 和 do…while的区别
public class Test1{
public static void main(String[] args){
int i = 101;
while(i<=100){
System.out.println(i);
i++;
}
}
}
运行结果:没有输出
public class Test1{
public static void main(String[] args){
int i = 101;
do{
System.out.println(i);
i++;
}while(i<=100);
}
}
运行结果:101
总结:while是先判断,再执行 do…while先执行,后判断
do…while至少执行一次。
五、分支、循环嵌套
★分支中嵌套分支结构
案例一:
a3e2
从键盘输入3个整数,输出其中最大的一个
import java.util.*;
public class Test1{
public static void main(String[] args){
int a,b,c;
Scanner s = new Scanner(System.in);
System.out.print("请输入一个整数:");
a = s.nextInt();
System.out.print("请输入一个整数:");
b = s.nextInt();
System.out.print("请输入一个整数:");
c = s.nextInt();
if(a>b){
if(a>c){
System.out.println(a);
}else{
System.out.println(c);
}
}else{
if(b>c){
System.out.println(b);
}else{
System.out.println(c);
}
}
}
}
★循环中嵌套分支结构
案例一: 输出1--100中能被3整除的数
public class Test1{
public static void main(String[] args){
for(int i=1;i<=100;i++){
if(i%3==0){
System.out.println(i);
}
}
}
}
★循环中嵌套循环结构
案例一:打印九九乘法表
public class Test1{
public static void main(String[] args){
for(int i=1;i<=9;i++){
for(int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+i*j+"\t");
}
System.out.println();
}
}
}
六、循环的控制 break、continue
break语句除了可以用在switch语句中,还可以用在循环体中。在循环体中遇见break语句,立即结束循环,跳到循环外,执行循环结构后面的语句 。break语句用于结束整个循环。
continue语句用于结束本次循环,即在循环体中遇见continue语句,则循环体中continue语句后面的语句不会执行,接着进行下一次循环的判定。
案例一:
public class Test1{
public static void main(String[] args){
for(int i=1;i<=5;i++){
if(i==3){
break;
}
System.out.println(i);
}
}
}
七、数组、一维数组
数组是所有编程语言只用一种常用的数据结构,它用来存储多个相同类型的数据。
JAVA中的数组要求数组中元素的类型一致。一旦数组初始化完成,数组在内存中所占用的空间被固定下来,因此数组的长度是不可变的。
★数组的定义
类型[] 数组名;//常用 int[] a; double[] b;char[] c
类型 数组名[];// int a[]
★数组的初始化
◆静态初始化
初始化时由程序员显示的指定每个数组元素的初始值,由系统决定数组的长度。
eg1:
int[] a;
a = new int[]{1,2,3,4,5};
◆动态初始化
初始化时程序员只指定数组的长度,而不指定数组中元素的值,系统自动给数组分配初始值。
eg1:
int[] a;
a = new int[5];
★访问数组元素
数组中每个元素都有一个下标,下标从0开始:访问数组元素可以根据数组下标。
eg:
int[] a = {55,66,85,32,75};
55 ------------ a[0]
66 ------------ a[1]
85 ------------ a[2]
32 ------------ a[3]
75 ------------ a[4]
★数组的应用
案例:求多个数据的和
public class Test1{
public static void main(String[] args){
int[] a = {55,23,89,64,85};
int sum=0;
for(int i=0;i<=a.length-1;i++){
sum = sum+a[i];
}
System.out.println("总分="+sum);
}
}
八、二维数组、多维数组
●二维数组:
二维数组就是存放一维数组的数组,一个二维数组可以看做多个一维数组。
int a = 10;
int[] b = {10,20,30};//b看做多个a的集合 可以把 b[0]和a等价
int[][] c = {{10,20,30},{5,6,7}};//c可以看做b的集合 可以把c[0]和b等价 c[0][0]和a等价
// c[0] c[1] 一维数组
// c[0][0] 值
★数组的定义
类型[][] 数组名;//常用
in t[][] a;
类型 数组名[][];// int a[][]
★数组的初始化
◆静态初始化
初始化时由程序员显示的指定每个数组元素的初始值,由系统决定数组的长度。
eg1:
int[][] a;
a = new int[][]{{1,2,3},{4,5,6}};
◆动态初始化
初始化时程序员只指定数组的长度,而不指定数组中元素的值,系统自动给数组分配初始值。
eg1:
int[][] a;
a = new int[2][3]; //2代表a中有两个一维数组 3代表一维数组中有3个值
相关文章推荐
- 3.28-29学习笔记——JAVA控制流程和数组
- Java学习笔记(三):流程控制与数组(1)
- Java 学习第四章之流程控制和数组
- JAVA基础知识学习笔记(流程控制、数组)
- 【Java学习笔记】流程控制与数组
- 【疯狂Java讲义学习笔记】【流程控制与数组】
- Java基础知识学习之路-05-第四章-流程控制与数组
- Java学习笔记(三):流程控制与数组(2)
- Java学习笔记之流程控制,数组(四)
- 学习笔记 Java_毕向东_流程控制语句_函数_数组 2014.7.30
- java学习_5.流程控制语句
- Java学习(三)流程控制
- java基础学习笔记第二天——流程控制
- 黑马程序员_java基础(2) 流程控制语句&函数与数组
- JAVA从零单排2-----流程控制和数组
- Java学习第二课--流程控制
- 4、从零开始学习JAVA--流程控制
- JAVA学习笔记之三(控制程序流程)
- thinking in java 学习笔记(二)之控制执行流程
- Think in java学习笔记-第3章 控制程序流程1