一、了解while循环
循环除了常用的for以外,还有2种循环
第1个:while
//死循环 while(true){ } public static void main(String[] args) { int i = 0; while(i < 10){ System.out.println("你好!"); i ++; } }
第2个:do-while
public class Test01 { public static void main(String[] args) { //不管循环条件是否满足,都会先做一次循环体的代码 int i = 0; do{ System.out.println("你好!"); i ++; }while (i <= 9); } }
二、了解switch - case
多分支: if(条件1){ //代码块1 }else if(条件2){ //代码块2 }else if (条件3){ //代码块3 }else{ //其它代码 } //但是如果:条件是 某几个固定的值,除了可以使用上市的if多分支以外,你还可以使用 //switch-case 中变量类型要求:byte short int String 枚举 //注意:break 代表 switch-case 执行结束,不要搞忘记添加 switch(变量){ case 1: //代码块1 break; case 2: //代码块2 break; …… default: //代码块n break; }
案例:
public static void main(String[] args) { System.out.println("请输入一个值:"); int i = new Scanner(System.in).nextInt();//89 switch (i){ case 1: System.out.println("输出1"); break; case 2: System.out.println("输出2"); break; case 3: System.out.println("输出3"); break; } }
三、掌握数据的扩容
Arrays 工具类
public static void main(String[] args) { int[] nums = {11,32}; //调用Arrays.toString(nums) 将数组的内容,以字符串的方式,打印输出出来 System.out.println(Arrays.toString(nums)); //数组的扩容,参数:第1个参数代表原数组,第2个参数代表新数组的长度 nums = Arrays.copyOf(nums, nums.length + 1); nums[nums.length - 1] = 22; System.out.println(Arrays.toString(nums)); }
1、新增图书
回到案例上:
public static void addBook(){ //先数组扩容 books = Arrays.copyOf(books, books.length + 1); System.out.println("请输入需要新增的图书:"); String book = new Scanner(System.in).next(); books[books.length-1] = book; }
2、修改图书
public static void updateBook(){ //需要用户录入:下标 新图书的名字 System.out.println("请输入图书的编号:"); int i = new Scanner(System.in).nextInt(); //判断用户的录入是否合法 if(i < 0 || i >= books.length){ System.err.println("你的输入有误,超出预定范围!"); return; } //请求用户录入新图书的名称,并且将新图书修改到 对应的位置 System.out.println("请输入新图书的名称:"); String newBook = new Scanner(System.in).next(); books[i] = newBook; }
3、删除图书
public static void deleteBook(){ System.out.println("请输入需要删除图书的编号:"); int i = new Scanner(System.in).nextInt(); //判断用户的录入是否合法 if(i < 0 || i >= books.length){ System.err.println("你的输入有误,超出预定范围!"); return; } //定义一个新的数组 String[] newArr = new String[books.length - 1]; //此时复制的是:旧数组的前部分 //第1个参数:原数组 //第2个参数:原数组中需要复制的起始位置 //第3个参数:新数组 //第4个参数:新数组中接收数据的起始位置 //第5个参数:需要复制的数据的个数 System.arraycopy(books,0,newArr,0,i); //此时复制的是:旧数组的后部分 System.arraycopy(books,i+1,newArr,i,books.length - i - 1); books = newArr; }
最简单的写法:
public static void deleteBook(){ System.out.println("请输入需要删除图书的编号:"); int i = new Scanner(System.in).nextInt(); //判断用户的录入是否合法 if(i < 0 || i >= books.length){ System.err.println("你的输入有误,超出预定范围!"); return; } books[i] = null; }
总结
-
循环除了For以外,还有while ,do-while 这种补充性循环
-
switch-case 也是属于多分支,if多分支放置的条件,而switch分支放置的是变量
-
switch变量类型要求:byte short int String 枚举
-
数组的扩容原理:创建一个新数组,并且将老数组的内容复制到新数组中即可,使用的API:Arrays.copyOf()
-
数组的缩容原理:创建一个新数组,并且从删除位置开始,将老数组中的内容分为2份,并使用System.arrayCopy() 分别将这2份,复制到新数组中