7.1选择结构switch

switch (表达式){

case 目标值1:

执行语句1

break;

case 目标值2:

执行语句2

break;

......

case 目标值n:

执行语句n

break;

default:

执行语句n+1

break;

}

在switch语句中的表达式只能是byte、short、char、int、Sting、enum枚举类型的值

7.2选择结构switch练习

在使用switch语句的过程中,如果多个case条件后面的执行语句是一样的,则该执行语句只需书写一次即可,这是一种简写的方式。例如,要判断一周中的某一天是否为工作日,同样使用数字1~7来表示星期一到星期天,当输入的数字为1、2、3、4、5时就视为工作日,否则就视为休息日。接下来通过一个案例来实现上面描述的情况,如下所示。SwitchDemo02.java

public class SwitchDemo02 {

public static void main(String[] args) {

int week = 2;

switch (week) {

case 1:

case 2:

case 3:

case 4:

case 5:

// 当 week 满足值 1、2、3、4、5 中任意一个时,处理方式相同

System.out.println("今天是工作日");

break;

case 6:

case 7:

// 当 week 满足值 6、7 中任意一个时,处理方式相同

System.out.println("今天是休息日");

break;

}

}

}

运行结果:

数组

8.1数组的定义

定义格式:

数据类型[] 数组名 = new 数据类型[元素个数或数组长度];

1   public class ArrayDemo01 {

2       public static void main(String[] args) {

3           int[] arr; // 声明变量

4           arr = new int[3]; // 创建数组对象

5           System.out.println("arr[0]=" + arr[0]); // 访问数组中的第一个元素

6           System.out.println("arr[1]=" + arr[1]); // 访问数组中的第二个元素

7           System.out.println("arr[2]=" + arr[2]); // 访问数组中的第三个元素

8           System.out.println("数组的长度是:" + arr.length); // 打印数组长度

9       }

10  }

运行结果:

1、类型[] 数组名 = new 类型[]{元素,元素,……};

2、类型[] 数组名 = {元素,元素,元素,……};

1   public class ArrayDemo03 {

2       public static void main(String[] args) {

3           int[] arr ={ 1, 2, 3, 4 }; // 静态初始化

4           // 下面的代码是依次访问数组中的元素

5           System.out.println("arr[0] = " + arr[0]);

6           System.out.println("arr[1] = " + arr[1]);

7           System.out.println("arr[2] = " + arr[2]);

8           System.out.println("arr[3] = " + arr[3]);

9       }

10  }

运行结果:

8.2数组遍历

public class ArrayDemo04 {

public static void main(String[] args) {

int[] arr = { 1, 2, 3, 4, 5 }; // 定义数组

// 使用for循环遍历数组的元素

for (int i = 0; i < arr.length; i++) {

System.out.println(arr[i]); // 通过索引访问元素

}

}

}

运行结果:

8.3数组的常见问题

8.3.1数组最值

public class ArrayDemo05 {

public static void main(String[] args) {

int[] arr = { 4, 1, 6, 3, 9, 8 }; // 定义一个数组

int max = arr[0]; // 定义变量max用于记住最大数,首先假设第一个元素为最大值

// 下面通过一个for循环遍历数组中的元素

for (int x = 1; x < arr.length; x++) {

if (arr[x] > max) { // 比较 arr[x]的值是否大于max

max = arr[x]; // 条件成立,将arr[x]的值赋给max

}

}

System.out.println("max=" + max); // 打印最大值

}

}

运行结果:

8.3.2数组异常

8.3.2.1数组越界异常

1   public class ArrayDemo06 {

2       public static void main(String[] args) {

3           int[] arr = new int[4]; // 定义一个长度为4的数组

4           System.out.println("arr[0]=" + arr[4]); // 通过角标4访问数组元素

5       }

6   }

运行结果:

上图运行结果中所提示的错误信息是数组越界异常ArrayIndexOutOfBoundsException,出现这个异常的原因是数组的长度为4,其索引范围为0~3,而上述代码中的第4行代码使用索引4来访问元素时超出了数组的索引范围。

所谓异常指程序中出现的错误,它会报告出错的异常类型、出错的行号以及出错的原因,关于异常在后面的章节会有详细地讲解。

8.2.2.2空指针异常

在使用变量引用一个数组时,变量必须指向一个有效的数组对象,如果该变量的值为null,则意味着没有指向任何数组,此时通过该变量访问数组的元素会出现空指针异常

1   public class ArrayDemo07 {

2       public static void main(String[] args) {

3           int[] arr = new int[3]; // 定义一个长度为3的数组

4           arr[0] = 5; // 为数组的第一个元素赋值

5           System.out.println("arr[0]=" + arr[0]); // 访问数组的元素

6           arr = null; // 将变量arr置为null

7           System.out.println("arr[0]=" + arr[0]); // 访问数组的元素

8       }

9   }

运行结果:

8.3二维数组

8.3.1二维数组常用定义格式

int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};

上面的二维数组中定义了三个元素,这三个元素都是数组,分别为{1,2}、{3,4,5,6}、{7,8,9},接下来通过一个图来表示这种情况,如图2-54所示。

问二维数组中第一个元素数组的第二个元素

arr[0][1];

8.3.2二维数组元素的访问

class ArrayDemo08 {

public static void main(String[] args){

//定义二维数组的方式

int[][] arr = new int[3][4];

System.out.println( arr );

System.out.println("二维数组的长度: " + arr.length);

//获取二维数组的3个元素

System.out.println( arr[0] );

System.out.println( arr[1] );

System.out.println( arr[2] );

System.out.println("打印第一个一维数组的元素值");

System.out.println( arr[0][0] );

System.out.println( arr[0][1] );//访问的为二维数组中第1个一维数组的第2个元素

System.out.println( arr[0][2] );

System.out.println( arr[0][3] );

System.out.println("打印第二个一维数组的元素值");

System.out.println( arr[1][0] );

System.out.println( arr[1][1] );

System.out.println( arr[1][2] );

System.out.println( arr[1][3] );

System.out.println("打印第三个一维数组的元素值");

System.out.println( arr[2][0] );

System.out.println( arr[2][1] );

System.out.println( arr[2][2] );

System.out.println( arr[2][3] );

}

}

运行结果:

8.3.3二维数组元素遍历与数组元素累加和

class ArrayDemo09 {

public static void main(String[] args){

//一维数组的求累加和并遍历

int[] arr = {10,20,30,40,50};

int sum = 0;

for (int i=0; i<arr.length; i++) {

//System.out.println(arr[i]);

sum += arr[i];

}

System.out.println("sum= " + sum);

System.out.println("---------------------");

//二维数组的求累加和并遍历

int[][] arr2 = { {1,2},{3,4,5},{6,7,8,9,10} };

int sum2 = 0;

for (int i=0; i<arr2.length; i++) {

for (int j=0; j<arr2[i].length; j++) {

//System.out.println(arr2[i][j])

sum2 += arr2[i][j];

}

}

System.out.println("sum2= "+ sum2);

}

}

运行结果:

Java流程控制语句和数组整理的更多相关文章

  1. java流程控制语句要点

    java流程控制语句要点 一.java7增强后的switch switch语句后面的控制表达式的数据类型只能是byte.short.char.int四种整数类型,不能是boolean类型,java7以 ...

  2. 01_Java语言基础部分(数据类型与表达式、流程控制语句、数组与方法)

    1. Java语言主要由5中符号组成 标识符:数字.字母.美元符.下划线(注意不能数字开头) 关键字(被Java赋予特殊意义的单词,注意所有关键字都是小写):   goto和const保留了它们,但是 ...

  3. Java流程控制语句

    流程控制语句 内容: if... if...else if...else if...else switch...case for while do...while 分支结构if 接下来要学习的if条件 ...

  4. Java流程控制和数组

    流程控制 Java中三种基本的流程控制结构:顺序结构,分支结构和循环结构. 顺序结构,任何编程语言中都会有的程序结构. 分支结构:Java语言中常见的两种, if语句和switch语句. if语句,使 ...

  5. Java 流程控制语句 之 顺序结构

    在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说,程序的流程对运行结果 有直接的影响.所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要通过控制语句的执行顺序来实 ...

  6. Java 流程控制语句

    java的流程控制: 1.顺序结构 2.选择结构 a.关系运算.逻辑运算.条件运算 b.if语句 c.if-else语句.if - else if -else语句 d.switch语句. 3.循环语句 ...

  7. Java基本语法-----java流程控制语句

    1顺序语句 语句:使用分号分隔的代码称作为一个语句. 注意:没有写任何代码只是一个分号的时候,也是一条语句,称作空语句. 顺序语句就是按照从上往下的顺序执行的语句. 2判断(if-else) 在我们找 ...

  8. java流程控制语句总结

    1.选择结构 if 方式1: 格式: if(条件表达式) { 语句体; } 执行流程: 如果条件表达式值为true, 执行语句体 如果条件表达式值为false,不执行语句体 方式2: 格式: if(条 ...

  9. JavaSE基础(七)--Java流程控制语句之switch case 语句

    Java switch case 语句 switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支. 语法 switch case 语句语法格式如下: switch(exp ...

随机推荐

  1. Nginx 多核cpu负载均衡

    L:122 查看Linux CPU 缓存大小 cat /sys/devices/system/cpu/cpu1/cache/index0/size //指令缓存 cat /sys/devices/sy ...

  2. socket跟TCP/IP 的关系,单台服务器上的并发TCP连接数可以有多少

    常识一:文件句柄限制 在Linux下编写网络服务器程序的朋友肯定都知道每一个tcp连接都要占一个文件描述符,一旦这个文件描述符使用完了,新的连接到来返回给我们的错误是"Socket/File ...

  3. Dijkstra—校园景点游览问题

    #include<iostream> #include<cstdio> #include<cstring> #define MAX 9999999 using na ...

  4. 前端 -- HTML内容

    HTML介绍 Wed服务本质 import socket sk = socket.socket() sk.bind(("127.0.0.1", 8080)) sk.listen(5 ...

  5. 接口压测初识java GC

    1.先用Spring Boot 搭建 web 服务,构建api 服务 @RequestMapping("/index") @ResponseBody public String i ...

  6. 自学Python4.7-生成器(方式一:生成器函数)

    自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...

  7. 【BZOJ4891】[TJOI2017]龙舟(Pollard_rho)

    [BZOJ4891][TJOI2017]龙舟(Pollard_rho) 题面 BZOJ 洛谷 题解 看了半天题....就是让你求\(\frac{b}{a}\)在模\(M\)意义下的值... 首先把\( ...

  8. 【原创】【状态压缩DP】POJ3254 Corn Fields【新手向】

    一开始根本不会状压dp,上网各种找题解,但发现他们写的都很......反正我作为一个没有接触过状态压缩的,根本看不懂! 然后看了好多状态压缩的题的题解,总结了一下思路,思路很重要,有了思路转换成计算机 ...

  9. cf1088C Ehab and a 2-operation task (构造)

    题意:给一个数列,你可以进行至多n+1次操作,每次给一个前缀对某数取模或者加某数,使得最后数列严格单增 考虑到因为是前缀和而且还不能加负数,光靠加是不能让前面的小于后面的 所以要让他先在模某数意义下单 ...

  10. zabbix3.2添加web页面监控(Web monitoring)

    应用场景: 存在一种情况:nginx或者httpd服务本身运行正常,但是网页挂了,类似于网页被黑,或者40X之类的... 可以用zabbix把web页面访问也监控起来,第一时间得知web崩溃信息并做相 ...