Java小白StudyDay05---while,do while,数组

一、break,continue

break和continue
break: 直接结束当前循环,如果在内层循环,只跳出内层,还会执行外层
continue: 结束本轮循环中continue后面的代码,直接开始下一轮循环
TIPS: break与continue后面不能直接写代码,都是不可到达的代码
我们来做一小案例就能明白其作用;案例需求:找数字88,如果不是88,就继续输入,如果找到88,就结束
我们还是直接上代码:

package cn.tedu.study1;
import java.util.Scanner;
//本类用于测试break和continue
//需求:找数字88,如果不是88,就继续输入,如果找到88,就结束
public class Day05TestBreakAndContinue {
	//1,创建程序的入口函数main
	public static void main(String[] args) {
		//2.创建一个循环,执行100次,100是自己自定义的,多少都行
				for(int i = 1 ; i <101 ; i++) {
					//3.提示并接收用户猜的数字
					System.out.println("请输入您想猜的数字");
					int input = new Scanner(System.in).nextInt();
					//4.判断用户输入的是否正确
					if(input != 88) {//用户猜的不是88
						continue;//直接跳过本轮continue后面的代码,开始下一轮
						//System.out.println("");//Unreachable code
					}
					/**注意:不管是加不加continue,都可以在猜不对的情况下继续猜
					 * 只不过在加了continue以后效率更高
					 * 只要猜的不是88,就不执行本轮循环中continue后面的代码
					 * 直接进行下一轮的猜数字即可
					 * */
					/**break与continue后面不能直接写代码,都是不可到达的代码*/
					System.out.println("我是用来测试continue后边的代码有没有执行");
					if(input == 88) {//用户猜的是88
						System.out.println("恭喜您!猜对了!");
						break;//猜对了就结束整个循环,后面的轮数都不执行
						//System.out.println();//Unreachable code
					}					
				}
	}
}

如果输入的数字不是88则会继续让用户去猜。
控制台显示
当我们输入88后:
控制台显示

二、 while,do while

while :循环,先判断,后执行
while(条件){满足条件执行的循环体 }
do-while 循环,先执行一次,再判断,如果符合条件,开始第二轮循环,不符合,结束
do{ 循环体 }while(条件);
TIPS:我们可以设置死循环,一定注意:死循环一定要设置出口
案例:让电脑产生一个随机数,然后用户去猜,并且会根据用户的数的大小提示猜大了还是猜小了。
首先我们要了解一下怎么让电脑产生一个随机数,

private static int careateNum() {
		//随机产生一个100以内的数
		int random = new Random().nextInt(100);
		return random;
	}

这里nextInt(100),括号里的100就是控制产生一个100以内的随机数,当然我们用这种方法就要导包import java.util.Random;这里这个案例使用到自定义方法的形式,所以通过这种方式我们可以,更直观的了解到代码的组成部分。下边是使用while的代码:

package cn.tedu.study1;

import java.util.Random;
import java.util.Scanner;

//本类用于练习while循环和do-while循环
//需求:产生一个随机数,和用户一直输入的数字作比较,直到用户猜对
public class Day05TestWhileAndDoWhile {
	public static void main(String[] args) {
		int m=careateNum();//调用生成随机数		
		guessNumber1(m);//while
	}

	
	private static void guessNumber1(int m) {
		//创建一个死循环
		while(true) {
			//提示用户输入猜想的数
			System.out.println("猜猜看~");
			int input =new Scanner(System.in).nextInt();
			if(input<m) {
				System.out.println("猜小了");
			}else if(input>m){
				System.out.println("猜大了");
			}else if(input==m) {
				System.out.println("猜对了");
				break;//一定注意设置出口
			}
		}	
	}
	private static int careateNum() {
		//随机产生一个100以内的数
		int random = new Random().nextInt(100);
		return random;
	}
}

下边是使用do while写的代码:

package cn.tedu.study1;

import java.util.Random;
import java.util.Scanner;

//本类用于练习while循环和do-while循环
//需求:产生一个随机数,和用户一直输入的数字作比较,直到用户猜对
public class Day05TestWhileAndDoWhile {
	public static void main(String[] args) {
		int m=careateNum();//调用生成随机数		
		guessNumber2(m);//do-while
	}

	

	private static void guessNumber1(int m) {
		//创建一个死循环
		while(true) {
			//提示用户输入猜想的数
			System.out.println("猜猜看~");
			int input =new Scanner(System.in).nextInt();
			if(input<m) {
				System.out.println("猜小了");
			}else if(input>m){
				System.out.println("猜大了");
			}else if(input==m) {
				System.out.println("猜对了");
				break;//一定注意设置出口
			}
		}	
	}

	private static int careateNum() {
		//随机产生一个100以内的数
		int random = new Random().nextInt(100);
		return random;
	}
}

三、数组

1、数组的创建

数组是用来存放多个相同类型的值的结构
数组需要开辟连续的内存空间,数组定义时,需要明确数组类型和长度
数组名保存的是数组是数组的地址值,是一个引用类型变量!!!!!!
例如数组char[] a= {'h','e','l','l','o'};h的地址就是a[0],数组的地址是从0开始的
数组的定义方式有两类:
1)静态创建–知道具体的元素值
2)动态长度–知道长度,后续需要动态的赋值
除了char类型的数组以外,其他类型的数组需要使用数组工具类Arrays的toString()
我们运用不同的方式定义数组,来展示他们的定义方法:

package cn.tedu.study1;
import java.util.Arrays;
//数组的创建
public class Day05TestCreateArray {
	public static void main(String[] args) {
		//静态创建--已经知道了数组中的具体元素
		char[] a= {'h','e','l','l','o'};
		char[] b= new char[] {'h','e','l','l','o'};	
		//动态创建
		char[] c=new char[5];
		
		/*我们通过数组下标来操作数组中的元素
		 * 数组下标从0开始,最大下标是数组的长度减一
		 */
		c[0]='h';//给数组的第一个元素赋值
		c[1]='e';
		c[2]='l';
		c[3]='l';
		c[4]='o';
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);	
		//创建一个Sting类型的数组
		/**
		 * char类型底层做了处理,可以直接打印数组中具体的元素内容
		 * 除了char类型以外的其他类型的数组,想要查看具体的元素
		 * 需要使用数组的工具类Arrays的toString(数组名)方法
		 * 注意:Arrays使用时需要导包:java.util.Arrays
		 */
		String[] s= {"a","b","c","d"};
		System.out.println(Arrays.toString(s));		
		//查看数组的长度--数组中存放的元素的个数
		System.out.println(a.length);
		System.out.println(s.length);
	}
}

2、数组的遍历

数组的遍历有什么用?最主要的用途是“比较”。
遍历数组中所有的元素,进行比较,得到需要的元素(索引、指针等);
我们来展示一下数组的遍历使用:

package cn.tedu.study1;
import java.util.Arrays;
//数组的创建
public class Day05TestCreateArray {
	public static void main(String[] args) {		
		m();	
	}
	private static void m() {
		int[] f= {31,28,31,30,31,30,30,31,30,31,30,31};
		for(int a=0;a<f.length;a++) {
			System.out.println("第"+(a+1)+"个月有"+f[a]+"天");
		}
	}
}

我们运行后的结果是:
控制台显示

3、数组的动态赋值

遍历数组,存入1~10;

package cn.tedu.study1;

import java.util.Arrays;

//本类用于练习向数组中动态赋值

public class Day05TestCreateArray2 {
	public static void main(String[] args) {
		//创建一个数组
		int[] a = new int[10];//动态创建,只指定长度10
		//我们可以已通过for循环遍历数组,依次给数组的每个位置上元素赋值
		//我们通过数组的下标来操作数组中的具体元素
		for(int m=0;m<a.length;m++) {
			a[m]=m+1;//在每轮循环中给数组的具体元素赋值
		}
		System.out.println(a);//打印的是一个地址值
		System.out.println(Arrays.toString(a));//查看数组中具体元素的值	
	}
}

3.1 练习使用数组工具类Arrays

练习Arrays.sort(数组)
对数组进行排序,对于基本类型的数组使用的是优化后的快速排序算法,效率高
对引用类型数组,使用的是优化后的合并排序算法

package cn.tedu.study1;

import java.util.Arrays;

//本类用于练习向数组中动态赋值

public class Day05TestCreateArray2 {
	public static void main(String[] args) {
		int [] n = {10,20,48,32,28,89};
		System.out.println("排序前:"+Arrays.toString(n));
		Arrays.sort(n);//特点,先排序,覆盖原有数组(原有值被改变),升序
		System.out.println("排序后:"+Arrays.toString(n));
		
	}
}

控制显示:
控制台
Arrays还能够进行数组的扩容,缩容。如果我们定义一个数组b,长度为5
数组的扩容:

int[] length = Arrays.copyOf(b,10);
        System.out.println(Arrays.toString(length));

数组的缩容:

int[] length = Arrays.copyOf(b,3);
        System.out.println(Arrays.toString(length));

最后就是Arrays还可以截取数组中某段地址的值:
截取数组的某段值,指定的是数组的下标,左闭右开,含头不含尾。

int[] length = Arrays.copyOfRange(b,3,5);
        System.out.println(Arrays.toString(length));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值