Java基础-day04-循环结构–while/do-while·数组·工具类Arrays·二维数组

循环结构–while/do-while

while :循环,先判断,后执行
while(条件){满足条件执行的循环体 }


do-while 循环,先执行一次,再判断,如果符合条件,开始第二轮循环,不符合,结束
do{ 循环体 }while(条件);


设置死循环要设置出口

package cn.tedu.review;

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

/*while or do{}while{}
 * 生成一个随机数[0,100)以内的整数,和用户一直输入的数字作比较,直到用户猜对了
 */
public class TestWhile_dowhlie {
	public static void main(String[] args) {
		int r = createNum();
		//System.out.println(r);
		//guessNumber1(r);//使用while循环猜数字
		guessNumber2(r);
	}

	private static void guessNumber2(int r) {
		// TODO Auto-generated method stub
		
	}

	private static void guessNumber1(int r) {
		// 使用while循环猜数字
		while(true){/*死循环需要设置出口*/
			System.out.println("猜猜看~");
			int input = new Scanner(System.in).nextInt();
			if(r<input){
			    System.out.println("哥们儿,猜大了");
			}else if(r>input){
				System.out.println("哥们儿,猜小了");
			}else if(r==input){
				System.out.println("牛批了!你终于对了");
				break;
			}
		}
	}
	private static int createNum() {
		// 产生随机数的方法
		//参数100是自定义的,此时随机数的范围是[0,100)以内的整数
		int random = new Random().nextInt(100);
		return random;
	}
}

数组

数组Array,标志是[ ],用于存储多个相同类型数据的集合
数组名需要开辟连续的内存空间,数组定义时,需要明确数组类型和长度
数组名保存的是数组的地址值,是一个引用类型变量!!!
在这里插入图片描述

创建数组格式:
1.静态初始化
int [ ] a = new int [ ]{1,2,3,4,5};
int [ ] b = {1,2,3,4,5};
2.动态初始化
int [ ] c = new int[5];

创建过程分析:
程序创建数组 int[] a = new int[5]; 时发生了什么?

在内存中开辟连续的空间,用来存放数据,长度是5
给数组完成初始化过程,给每个元素赋予默认值,int类型默认值是0
数组完成初始化会分配一个唯一的地址值
把唯一的地址值交给引用类型的变量a去保存

//数组的创建

	/*char类型底层做了处理,可以直接打印数组中具体的元素内容
	 * 除了char类型以外的其他类型的数组,想要查看具体的元素
	 * 需要使用数组的工具类Array.toString(数组名)方法
	 * 注意:Arrays使用时需要导包 :java.util.Arrays;
	 */
package cn.tedu.array;

import java.util.Arrays;

//数组的创建
public class TestCreatearray {
	public static void main(String[] args) {
		char[] a = {'h','e','l','l','o'}; 
		char[] b = new char[]{'h','e','l','l','o'};
		
		//1.2
		char [] c = new char[5];
		/*我们通过数组下标来操作数组的元素
		 * 数组下标从0开始,最大下标是数组长度-1
		 */
		System.out.println(a);
		System.out.println(b);

		c[0] = 'h';
		c[1] = 'e';
		c[2] = 'l';
		c[3] = 'l';
		c[4] = 'o';
		System.out.println(c);
		/*char类型底层做了处理,可以直接打印数组中具体的元素内容
		 * 除了char类型以外的其他类型的数组,想要查看具体的元素
		 * 需要使用数组的工具类Array的toString(数组名)方法
		 * 注意:Arrays使用时需要导包 :java.util.Arrays;
		 */
		//
		String[] s = {"a","b","c"};
		System.out.println(s);//[Ljava.lang.String;@15db9742
		//打印的是地址
		System.out.println(Arrays.toString(s));
		//Arrays.toString() 
		//查看数组的长度--数组中存放元素的个数
		//a.length
		System.out.println(a.length);
		System.out.println(s.length);
	}
}

数组遍历

遍历:从头到尾,依次访问数组每一个位置,获取每一个位置的元素.

package cn.tedu.array;
//输出一年中每个月的天数
public class TestArrayExec {
	public static void main(String[] args) {
		/*
		 * 1 3 5 7 8 10 腊,31天永不差
		 */
		int[] a = {31,28,31,30,31,30,31,31,30,31,30,31};
		/*输出每个月的天数
		 * 遍历数组,Array.toString(数组名)
		 * 从哪里开始 :0
		 * 到哪结束:a.length-1
		 * 如何变化:++
		 */
		for (int i=0;i<=a.length;i++){
			System.out.println(i+1+"月有"+a[i]+"天");
		}
	}
}

数组的动态赋值

  • 可通过循环遍历数组,依次给数组的每个位置上的元素(有规律)赋值
package cn.tedu.array;
//数组的动态赋值
import java.util.Arrays;

/*数组的动态赋值
 * 可通过循环遍历数组,依次给数组的每个位置上的元素(有规律)赋值
 * 存1-10
 */
public class TestArray2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] a = new int[10];//
		//
		for(int i=0;i<=a.length-1;i++){
			//System.out.println(i);
			//System.out.println(a[i]);
			a[i] = i+1;
		}
		System.out.println(a);//打印的是一个地址值
		System.out.println(Arrays.toString(a));

	}

}

测试数组的工具类Arrays

Arrays.toString(数组名);

package cn.tedu.array;
//Array.toString(数组名)
import java.util.Arrays;

//测试数组的工具类Arrays
public class TestArrays3 {

	public static void main(String[] args) {
		// 
		int[] a = {12,78,34,13};
		Arrays.sort(a);
		//把数组a进行排序
		System.out.println(Arrays.toString(a));
	}
}

Arrays.sort(a);自动排序—从小到大

package cn.tedu.array;
//Arrays.sort(a);排序
import java.util.Arrays;

//测试数组的工具类Arrays
public class TestArrays3 {

	public static void main(String[] args) {
		// 
		int[] a = {12,78,34,13};
		Arrays.sort(a);
		//把数组a进行排序
		System.out.println(Arrays.toString(a));
	}

}

Arrays.copyof(数组名,新的长度)
*把数组赋值成一个指定长度的新数组
*新数组的长度 大于 原数组, 相当于复制,并增加位置
*新数组的长度 小于 原数组, 相当于截取一部分数据

package cn.tedu.array;

import java.util.Arrays;

//Arrays.copyof(数组名,新的长度)
/*把数组赋值成一个指定长度的新数组
*新数组的长度 大于 原数组, 相当于复制,并增加位置
*新数组的长度 小于 原数组, 相当于截取一部分数据
*/
public class TestArraycopyof {
	public static void main(String[] args) {
		String[] s = {"r","e","A","d","y"}; 
		
		String[] a = Arrays.copyOf(s,7);
		System.out.println(Arrays.toString(a));
		
		String[] b = Arrays.copyOf(s,3);
		System.out.println(Arrays.toString(b));
		
		Arrays.sort(s);
		System.out.println(Arrays.toString(s));
		
		//Arrays.sort(a);
		//System.out.println(Arrays.toString(a));
		//空字符不能排序
		Arrays.sort(b);
		System.out.println(Arrays.toString(b));
	}
}

Arrays.copyOfRange(to, 2, 4); //中间截取,这个方法指定的是数组的下标,左闭右开,[2,4)

package cn.tedu.review;

import java.util.Arrays;

public class TestArray {
    public static void main(String[] args) {
        int[] from = {1,2,3,4,5};
        //扩容
        int[] to = Arrays.copyOf(from,10);
        System.out.println(Arrays.toString(to));
        //缩容
        //截取的个数,Arrays.copyOfRange(to,2,4);
        // 这个方法指定的是数组的下标,左闭右开,[2,4)
        int[] to3 = Arrays.copyOfRange(to,2,4);
        System.out.println(Arrays.toString(to3));
        System.out.println(Arrays.toString(to3));

    }
}

二维数组

在这里插入图片描述
//Arrays.tostring 打印不了二维数组,
//可用for对二维数组进行遍历

package cn.tedu.array;

import java.util.Arrays;

//二维数组
//Arrays.tostring 打印不了二维数组,
//可用for对二维数组进行遍历
public class Array2 {
	public static void main(String[] args) {
		int[][] a = {{3,5},{5,6,8},{7,8,9}};
		
		System.out.println(Arrays.toString(a));
		//Arrays.tostring 打印不了二维数组,
		for(int i=0;i<a.length;i++){
			for(int j=0;j<a[i].length;j++){
				System.out.println(a[i][j]);
			}
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值