3、循环&数组&遍历&数据筛选
一、循环
循环:可以重复的执行某些事务
举例:每年都给老婆表白一次!
循环输出0-100的所有数值
public class NumberPrint { public static void main(String[] args) { for(int i = 0; i <= 100; i = i ++){ System.out.println(i); } } }
二、数组
数组:就是一个装东西的大容器
问题:假如我有多个数值,都需要让程序存储起来,怎么办?
解决方案:使用数组
数组也就是一个特殊的变量,只不过这个变量的空间是连续的!
数组的语法:
数据类型[] 变量名 = {数据1,数据2,数据3……}; 或 数据类型 变量名[] = {数据1,数据2,数据3……};
例如:
public class ArrayDemo { public static void main(String[] args) { //变量的语法 数据类型 变量名 = 初值; int[] arr1 = {1,2,3,4,5}; double[] arr2 = {1.1,1.2,1.3}; //字符串类型的数组 String[] names = {"张三","李四","王五"}; } }
那是否可以根据下标获取数据呢?
public class ArrayDemo { public static void main(String[] args) { String[] names = {"张三","李四","王五"}; //数组下标范围:0 到 length - 1 System.out.println(names.length); System.out.println(names[0]); System.out.println(names[names.length - 1]); } }
三、数组遍历
遍历:使用循环,将集合/数组中的每一个元素 都访问到
For循环的语法结构:
for(初始变量;控制语句;变量的改变){ //循环的内容 }
public class ArrayDemo { public static void main(String[] args) { String[] names = {"张三","李四","王五"}; for(int i = 0;i < names.length;i++){ //输出下标 System.out.println(i); //输出具体的值 System.out.println(names[i]); } } }
死循环:
//死循环 for(;;){ System.out.println("略略略"); }
从整数数组中,筛选出 > 20的数据
后台:
1、从前端获取数据,将数据存储到数据库中
2、从数据库中将数据,读取到集合/数组中,并做一定的筛选
public class ArrayDemo { public static void main(String[] args) { //定义一个数组 int[] nums = {1,21,22,12,11}; // 找到 大于 20 的数据 for(int i = 0; i < nums.length; i ++){ //判断数据是否大于 20,大于20 的就输出出来 if(nums[i] > 20){ System.out.println(nums[i]); } } } }
1、IF 流程控制
if 可以帮我们做 数据筛选
语法:
if(条件){ //满足条件,就执行{}中的代码 }
数值判断符号
>大于 <小于 >=大于等于 <=小于等于 ==等于 !=不等于
例1:
int[] nums = {1,2,3,4,5}; //从上述的数组中,筛选并打印出 不等于 3的数据 public class ArrayDemo { public static void main(String[] args) { int[] nums = {1,2,3,4,5}; //遍历 for(int i = 0; i < nums.length; i ++){ //筛选 if(nums[i] != 3){ //输出 System.out.println(nums[i]); } } } }
例2:
int[] nums = {2,3,4,5,6}; //从上述的数组中,筛选并打印出 所有的偶数,偶数条件提醒:nums[i] 取模2 等于 0 public class ArrayDemo { public static void main(String[] args) { int[] nums = {2,3,4,5,6}; //遍历 for(int i = 0; i < nums.length; i ++){ //筛选 if(nums[i] % 2 == 0){ //输出 System.out.println(nums[i]); } } } }
例3:
int[] nums = {1,2,3,4,5}; //从上述的数组中,筛选并打印出 所有的奇数,奇数条件提醒:nums[i] 取模2 不等于 0 public class ArrayDemo { public static void main(String[] args) { int[] nums = {1,2,3,4,5}; //遍历 for(int i = 0; i < nums.length; i ++){ //筛选 if(nums[i] % 2 != 0){ //输出 System.out.println(nums[i]); } } } }
例4:
int[] nums = {1,2,-3,4,-5}; //从上述的数组中,筛选并打印出 所有的负数 public class ArrayDemo { public static void main(String[] args) { int[] nums = {1,2,-3,4,-5}; //遍历 for(int i = 0; i < nums.length; i ++){ //筛选 if(nums[i] < 0){ //输出 System.out.println(nums[i]); } } } }
2、统计
统计下 有多少个负数,统计结束之后,打印输出结果
public class ArrayDemo { public static void main(String[] args) { int[] nums = {1,2,-3,4,-5}; //计数器 int count = 0; //遍历 for(int i = 0; i < nums.length; i ++){ //筛选 if(nums[i] < 0){ //计数器 + 1 count ++; } }//for循环结束,代表:统计工作到此结束 //输出 System.out.println("小于0的数据有:[ " + count + " ] 个!"); } }
例5:
int[] nums = {1,2,-3,4,-5}; //统计下,上述的数组中,有多少可以被2整除的数据 public class ArrayDemo { public static void main(String[] args) { int[] nums = {1,2,-3,4,-5}; //计数器 int c = 0; //遍历 for (int i = 0; i < nums.length; i++) { //筛选 if(nums[i] % 2 == 0){ c ++; } } //遍历结束 //输出 System.out.println("能被2整除的数据有 " + c + "个!"); } }
3、累加和
public class ArrayDemo { public static void main(String[] args) { int[] nums = {1,2,-3,4,-5}; int sum = 0; //遍历 for (int i = 0; i < nums.length; i++) { sum += nums[i]; } //输出 System.out.println(sum); } }
例1:计算0到100的累加和
public class ArrayDemo { public static void main(String[] args) { int sum = 0; //计算0到100的累加和 for (int i = 0; i <= 100; i++) { sum += i; } //累加结束,输出 System.out.println("sum = " + sum); } }
例2:计算0到100的偶数累加和
public class ArrayDemo { public static void main(String[] args) { int sum = 0; //计算0到100的累加和 for (int i = 0; i <= 100; i++) { if (i % 2 == 0) { sum += i; } } //累加结束,输出 System.out.println("sum = " + sum); } }
四、字符串数组
String[] names = {"张三","李四","王五","赵六"}; //需求:使用for循环遍历上述的数组 public class ArrayDemo { public static void main(String[] args) { //需求:使用for循环遍历下面的数组 String[] names = {"张三", "李四", "王五", "赵六"}; for (int i = 0; i < names.length; i++) { System.out.println(names[i]); } } }
从数组中筛选出姓”张“的人
public class ArrayDemo { public static void main(String[] args) { //需求:使用for循环遍历下面的数组 String[] names = {"张三", "李四", "王五", "赵六"}; for (int i = 0; i < names.length; i++) { String name = names[i]; //判断 字符串 是否 以某个其它字符串开头 if(name.startsWith("张")){ System.out.println(name); } } } }
字符串前期的方法介绍:
public class ArrayDemo { public static void main(String[] args) { String name = new String("张三"); //判断是否以“张”开头 System.out.println(name.startsWith("张")); //判断是否以“三”开头// System.out.println(name.endsWith("三")); //判断是否包含“三” System.out.println(name.contains("三")); //字符串判断是否相等,不能使用 ==,应该使用equals() System.out.println(name.equals("张三疯")); } }
总结
1、循环:周而复始的做相同的或类似的事情,解决方案:for 循环
2、循环可以帮我们遍历 数组
3、数组:是一个可以帮我们装很多数据的容器,特点:空间是连续的,元素类型相同,数组长度固定的
4、遍历数组,使用for循环;挑选数据,使用if条件判断;统计数据,使用计数器;
5、startsWith() endWith() contains() equals() length()
6、字符串的比较,不能使用 ==,需要使用equals() ;