java基础09 数组的使用

1.打擂法求最大值和最小值:

 package cn.kgc.shuzushiyong;
/**
 * 
 * @author Vip宅男
 *
 */
public class Test {
	/**
          * 求数组中的最大值
          */
	public static void main(String[] args) {
		/**
		 * 定义一个数组
		 */
		int[] nums={50,20,30,80,100,90};
		/**
		 * 定义一个擂主
		 */
		int max=0;
		/**
		 * 循环打雷
		 */
		for (int i = 0; i < nums.length; i++) {
			//如果发现  数组中的元素  大于max  就让当前的元素的值给max
			if (nums[i]>max) {
				max=nums[i];
				System.out.println("历届的擂主:"+max);
			}
		}
		System.out.println("最终的擂主:"+max);
		System.out.println("*******************************");
		/**
	          * 求数组中的最小值
	          */
		int[] nums1={50,20,30,80,100,90};
		//定义一个最小值  默认值是  数组中的的第一个元素
		int min=nums1[0];
		/**
		 * 循环打雷
		 */
		for (int i = 0; i < nums1.length; i++) {
			if (min>nums1[i]) {
				//如果发现数组中的元素小于min 就把元素的值给min
				min=nums1[i];
			}
		}
		System.out.println("最小值是:"+min);
		System.out.println("*******************************");
	}
}
2.数组的基本使用:
package cn.kgc.shuzushiyong;
import java.util.Arrays;
import java.util.Scanner;
/**
 * 
 * @author Vip宅男
 *
 */
public class Test02 {
	/**
	 * 数组:一组相同数据类型的集合  在内存中开辟一连串的空间
	 * 和String一样,都是  引用数据类型
	 * 数据类型 [] 数组名称
	 * 数组的下标=数组的长度-1
	 */
	public static void main(String[] args) {
		/**
		 * 01.声明数组  创建了一个火车厢
		 */
		int[] nums;
		/**
		 * 02.分配空间  给火车厢创建座位
		 */
		nums=new int[5];
		/**
		 * 03.赋值  旅客入座
		 */
		nums[0]=50;
		/**
		 * 04.使用nums.length(获取数组的长度)
		 */
		for (int i = 0; i < nums.length; i++) {
			System.out.println("数组nums的第"+(i+1)+"个位置的数据是:"+nums[i]);
		}
		System.out.println("*********************************************");
		/**
		 * 声明数组的同时给数组赋值:
                 * 给你说 创建车厢的同时,告诉你里面有多少个座位
                 * 
                 * int  [] sums;
                 * sums={ 1, 2, 3, 4, 5 };  这种写法是错误的!
                 */
		int[] sums={1,2,3,4,5};
		/**
		 * 寻找到下标为3的数据
		 */
		System.out.println(sums[3]);
		System.out.println("*********************************************");
		/**
		 * 计算5位同学的平均分
		 */
		double[] scores=new double[5];//创建一个长度为5的double类型的数组,保存学生成绩
		//循环给学生成绩赋值
		Scanner scanner=new Scanner(System.in);
		double sum=0;//保存学生总成绩
		for (int i = 0; i < scores.length; i++) {
			System.out.println("请输入第"+(i+1)+"位同学的成绩:");
			scores[i]=scanner.nextDouble();
			//每个学生的成绩需要加到sum中
			sum+=scores[i];
		}
		System.out.println("学生的总成绩:"+sum);
		System.out.println("学生的平均分:"+(sum/scores.length));
		System.out.println("*********************************************");
		 /**
	          *有一个数列:8,4,2,1,23,344,12
	           循环输出数列的值
	           求数列中所有数值的和
	           猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数 
	          */
		int sum1=0;
		int[] nos={8,4,2,1,23,344,12};
		for (int i = 0; i < nos.length; i++) {
			System.out.println(nos[i]);
			sum1+=nos[i];
		}
		System.out.println(sum1);
		System.out.println("*********************************************");
		System.out.println("请您输入一个数字:");
		int no=scanner.nextInt();
		boolean flag=false;//定义标记,来记录是否中奖
		for (int i = 0; i < nos.length; i++) {
			if (no==nos[i]) {
				flag=true;
				break;
			}
		}
		if (flag) {//判断标记
			System.out.println("恭喜您中奖了");
		}else {
			System.out.println("没有找到.............");
		}
		System.out.println("*********************************************");
		/**
	         * 以表格的形式输出5笔购物金额及总金额 
	         */
		double[] pays=new double[5];
		System.out.println("请输入本月消费的记录:");
		for (int i = 0; i < pays.length; i++) {
			System.out.println("请输入第"+(i+1)+"次的消费金额:");
			pays[i]=scanner.nextDouble();//给数组每个元素赋值
		}
		//没有排序的遍历
		for (int i = 0; i < pays.length; i++) {
			System.out.println(pays[i]);
		}
		System.out.println("**********************升入之后**********************");
		Arrays.sort(pays);//升入
		for (int i = 0; i < pays.length; i++) {
			System.out.println(pays[i]);
		}
	}
}
3.操作数组的工具类:
package cn.kgc.shuzushiyong;
import java.util.Arrays;
/**
 * 操作数组的工具类!
 * @author Vip宅男
 *
 */
public class Arrays02 {
	/**
	 * equals(arr1, arr2) :比较两个数组的内容和长度 是否一致
	 */
	@SuppressWarnings("unused")
	public void testEquals(){
		int[] nums1 = { 10, 20, 30, 50 };
		int[] nums2 = nums1;
	    int[] nums3 = { 10, 20, 30 };
	    System.out.println("nums1与nums2比较:" + Arrays.equals(nums1, nums2));
        System.out.println("nums1==nums2比较:" + (nums1 == nums2));
	}
	/**
	 * sort(arr):对数组中的元素进行升序的排列
	 */
	public void testSort(){
		 int[] nums = { 10, 50, 30, 20 };
		 Arrays.sort(nums);
		 for (int i = 0; i < nums.length; i++) {
			System.out.println(nums[i]);
		}
	}
	/**
	 * toString:把一个数组变成字符串
	 * [10, 50, 30, 20]   集合toString的结果!
	 */
	public void testToString(){
		int[] nums = { 10, 50, 30, 20 };
		System.out.println(Arrays.toString(nums));
	}
	/**
	 * fill(arr,val):将arr数组中的所有元素都赋值成了val
	 */
	public void testFill(){
		int[] nums = { 10, 50, 30, 20 };
		System.out.println(Arrays.toString(nums));
		 Arrays.fill(nums, 100);
		 System.out.println(Arrays.toString(nums));
	}
	/**
	 * copyOf(arr,length):将数组arr复制成一个长度为length的新数组
	 */
	public void testCopyOf(){
		 int[] nums = { 10, 50, 30, 20 };
	     int[] nums1 = Arrays.copyOf(nums, 3);
	     System.out.println(Arrays.toString(nums1));
	}
	/**
	 * binarySearch(arr,val):查询val在arr数组中的下标!
	 * 必须先升序排列!  Arrays.sort(arr)!!!!
	 */
	public void testBinarySearch(){
		int[] nums = { 10, 50, 30, 20 };
		Arrays.sort(nums);
		System.out.println(Arrays.binarySearch(nums, 50));
	}
	/**
	 * 测试类
	 * @param args
	 */
	public static void main(String[] args) {
		Arrays02 arrays02=new Arrays02();
		arrays02.testEquals();
		System.out.println("***********************************");
		arrays02.testSort();
		System.out.println("***********************************");
		arrays02.testToString();
		System.out.println("***********************************");
		arrays02.testFill();
		System.out.println("***********************************");
		arrays02.testCopyOf();
		System.out.println("***********************************");
		arrays02.testBinarySearch();
	}
}
4.打擂法求最值:
package cn.kgc.shuzushiyong;
/**
 * 
 * @author Vip宅男
 *
 */
public class Test02 {
	/**
	 * 打擂法 求数组中的最大值
	 */
	public static void main(String[] args) {
		int[] nums = { 10, 50, 30, 200 };
		/**
		 * 默认的擂主
		 */
		int max=nums[0];
		 // 让max依次和nums中的每一个元素进行比较
		for (int i = 0; i < nums.length; i++) {
			if (max<nums[i]) {
				max=nums[i];
			}
		}
		System.out.println("最大值:"+max);
		System.out.println("********************************");
		/**
		 * 求数组中的最小值
		 */
		//定义一个数组   参赛的选手
        int  [] nums1={50,200,30,80,100,90};
        //定义一个最小值  默认是   数组中的第一个元素
        int min=nums1[0];
        for (int i = 0; i < nums1.length; i++) {
			if (min>nums1[i]) {
				//如果发现数组中的元素小于min 把元素的值给min
				min=nums1[i];
				System.out.println("最小值:"+min);
			}
		}
	}
}
5.字符的逆序输出:
package cn.kgc.shuzushiyong;
import java.util.Arrays;
/**
 * 
 * @author Vip宅男
 *
 */
public class CharSort03 {
	/**
  * 字符的逆序输出
  */
	public static void main(String[] args) {
		char[] chars = { 'a', 'f', 'c', 'g', 'z', 'y' };
		/**
  * 升序
  */
		Arrays.sort(chars);
		System.out.println("升入后的字符===》"+Arrays.toString(chars));
		/**
  * 逆序
  */
		System.out.println("逆序之后的字符===》");
		for (int i = chars.length-1; i>=0; i--) {
			System.out.println(chars[i]);
		}
		System.out.println("**********************************");
		/**
  * char类型的默认值: '\u0000'
  */
		char[] chars1= { 'a', 'c', 'f', 'g', 'y', 'z', '\u0000' }; // 必须有顺序
		System.out.println(chars1.length);
		char c='x';//需要插入的字符
		int index=chars1.length;
		//找小标
		for (int i = 0; i < chars1.length; i++) {
			if (c<chars1[i]) {
				index=i;
				break;
			}
		}
		/**
  * 元素后移
  */
		for (int j = chars1.length-1; j>index; j--) {
			chars1[j]=chars1[j-1];
		}
		/**
  * 插入数据
  */
		chars1[index]=c;
		for (int i = 0; i < chars1.length; i++) {
			System.out.println(chars1[i]);
		}
	}
}
6.多重数组:
package cn.kgc.shuzushiyong;
/**
 * 
 * @author Vip宅男
 *
 */
public class DoubleArray03 {
 @SuppressWarnings("unused")
 public static void main(String[] args) {
 int[] clazz=new int[3];//保存班级
 int[] students=new int[5];//保存学生
 DoubleArray03 doubleArray03=new DoubleArray03();
 doubleArray03.test05();
 System.out.println("**************************************");
 doubleArray03.test06();
 }
 @SuppressWarnings("unused")
 public void test01(){//声明的同时开辟空间
 int[][] nums=new int[3][5];//3个班级各五名学生
 }
 @SuppressWarnings("unused")
 public void test02(){//先声明 再开辟空间
 int[][] nums;
 nums=new int[3][5];//3个班级各五名学生
 }
 public void test03(){//声明 开辟空间的同时赋值
 int[][] nums={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}};
 System.out.println(nums.length);//3个班级各五名学生
 }
 public void test04(){
 int[][] nums=new int[3][5];//3个班级各五名学生
 //第二个班级第三个学生
 nums[1][2]=50;
 }
 public void test05(){
 int[][] nums = { { 1, 2, 3 }, { 10, 20, 30 }, { 100, 200, 300 } };
 /**           * nums.length   车厢数           * nums[i].length 车厢中的座位数           * 双重循环:           *   外层循环执行一次,内存循环执行一遍!           */
 for (int i = 0; i < nums.length; i++) {
 System.out.println("进入了第"+(i+1)+"个车厢****************");
 if (i==2) {
 break;//跳出当前循环体
 }
 for (int j = 0; j < nums.length; j++) {
 if (j==2) {
 break;//跳出当前循环体
 }
 System.out.println(nums[i][j]);
 }
 }
 }
 public void test06(){
 /**       * 所有的引用数据类型如果没有实例化(开辟空间)! 不能使用!       * 因为引用数据类型的默认值 是  null!       */
 int[][] nums1 = new int[5][];
 System.out.println(nums1.length);
 nums1[0]=new int[5];//开辟空间
 nums1[1]=new int[6];
 nums1[0][0] = 50; // 使用
     nums1[0][1] = 60;
     nums1[0][2] = 70;
     nums1[0][3] = 80;
     System.out.println(nums1[0].length);
     System.out.println(nums1[1].length);
 }
}
7.冒泡排序:
package cn.kgc.shuzushiyong;
/**
 * 冒泡排序 升序的排列
 * @author Vip宅男
 *
 */
public class DoubleArray04 {
public void test01(){
int [] nums={1,5,8,2,3,5};
/**
         * 外层循环控制轮数     数组的长度-1
         * 外层循环每执行一次, 内层循环执行一遍
         */

for (int i = 0; i < nums.length-1; i++) {
System.out.println("这是第"+(i+1)+"轮================");
/**
* 内层循环  数组的长度-1-i;
*/

for (int j = 0; j < nums.length-1-i; j++) {
System.out.println("比较了第"+(j+1)+"次");
}
}
}
/**
* 冒泡排序 升序的排列
* @param args
*/
public void test02(){
int [] nums={10,5,8,2,3,50,5000,500,30,65,98};
/**
         * 外层循环控制轮数     数组的长度-1
         * 外层循环每执行一次, 内层循环执行一遍
         * 
         * 无论多少个数字相比
         * 都是相邻的两个数字进行比较,
         * 数值小的元素会交换前面的位置
         * 代码:
         * 外层循环 : 数组长度-1
         * 内层循环: 数组长度-1-i
         * 
         */

for (int i = 0; i < nums.length-1; i++) {
//内层循环    数组的长度-1-i
for (int j = 0; j < nums.length-1-i; j++) {
if (nums[j]>nums[j+1]) { //相当于  第一个元素大于下一个元素 那么需要和下个元素换位置
//等量转换
int temp=nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
/**
* 遍历数组中的元素
*/

for (int i : nums) {
System.out.println(i);
}
}
public static void main(String[] args) {
DoubleArray04 doubleArray04=new DoubleArray04();
doubleArray04.test01();
System.out.println("=============================");
doubleArray04.test02();
}
}

8.Arrays工具类的使用:

package cn.kgc.shuzushiyong;
import java.util.Arrays;


/**
 * 
 * @author Vip宅男
 *
 */
public class TestArrays {
/**
          * Arrays.equals(数组1,数组2)
          * 01.首先比较的而是数组的长度是否一致
          * 02.比较数组中的元素  
          */

public void test01(){
int nums1[]={10,20,30};
   int nums2[]={10,20,30};
   int nums3[]={10,30,20};
   System.out.println(nums1==nums2);  //比较内存地址  false
   //equals
        System.out.println(nums1.equals(nums2));   //底层还是比较内存地址  false
        System.out.println(Arrays.equals(nums1, nums2));  //true
        System.out.println(Arrays.equals(nums1, nums3));  //false
}
/**
         * [L@4a7fca02  :数组toString()的结果
         */

public void test02(){
int nums1[]={10,20,30};
//把数组转换成字符串
System.out.println(Arrays.toString(nums1));
}
public void test03(){
int nums1[]={10,20,30};
//把数组转换成字符串
        System.out.println(Arrays.toString(nums1));
        //copyOf(数组,长度)
        int[] nums2 = Arrays.copyOf(nums1, 10);
        System.out.println(Arrays.toString(nums2));
}
public void test04(){
int nums1[]={10,20,30};
System.out.println("nums1之前的值:"+Arrays.toString(nums1));
//fill(数组,值)
Arrays.fill(nums1, 500);
   System.out.println("nums1fill之后的值:"+Arrays.toString(nums1));
}
/**
         * binarySearch(数组,值)
         * 查询值 在数组中下标的位置
         */

public void test05(){
int nums1[]={100,200,10,20,30};
//01.必须先排序   升序
Arrays.sort(nums1);
//02.查询20的下标    [10,20,30,100,200]
System.out.println(Arrays.binarySearch(nums1, 20));
}
public static void main(String[] args) {
TestArrays test=new TestArrays();
test.test01();
System.out.println("************************");
test.test02();
System.out.println("************************");
test.test03();
System.out.println("************************");
test.test04();
System.out.println("************************");
test.test05();
}
}

9.二维数组:

package cn.kgc.shuzushiyong;
/**
 * 
 * @author Vip宅男
 *
 */
public class TestArrays02 {
/** 
         * 二维数组: 数组中的元素 又是一个数组!
         */

public void test01(){
//01.创建二维数组
        int[][] nums=new int[3][3]; //int [][] nums2={{1,2,3},{4,5,6},{7,8,9}};        
        nums[0][0]=5;
        nums[0][1]=6;
        nums[0][2]=7;
        
        nums[1][0]=5;
        nums[1][1]=6;
        nums[1][2]=7;
        
        nums[2][0]=5;
        nums[2][1]=6;
        nums[2][2]=7;     
}
public void test02(){
//01.创建二维数组
        int [][] nums={{1,2,3,4},{4,5,6},{7,8}};
        
        System.out.println(nums[0]);//{1,2,3}
        System.out.println(nums[0][1]);//2
        System.out.println("nums的长度:"+nums.length);
        System.out.println("第2个数组中下标是2的元素"+nums[1][2]);
}
/**
         * 循环打印出数组所有的元素
         */

public void test03(){
//01.创建二维数组
        int [][] nums={{1,2,3,4},{4,5,6},{7,8}};
        for (int i = 0; i < nums.length; i++) {  //外层
            System.out.println("这是2维数组中的第"+(i+1)+"个数组");
            for (int j = 0; j < nums[i].length; j++) {//内层
                System.out.println("元素的值:"+nums[i][j]);
            }
        }       
}
public static void main(String[] args) {
TestArrays02 test=new TestArrays02();
test.test01();
System.out.println("**************************");
test.test02();
System.out.println("**************************");
test.test03();
}
}

10.二维数组小练习:

package cn.kgc.shuzushiyong;
import java.util.Scanner;
/**
 * 
 * @author Vip宅男
 *
 */
public class TestArrays03 {
/**
         * 已知有3个班级各3名学员,请使用
         *二维数组计算各个班级的总成绩
         */

public void test01(){
/**
* 01.创建一个二维数组
*/

int[][] nums=new int[3][4];
Scanner scanner=new Scanner(System.in);
/**
* 定义一个数组变量  存储每个班级的成绩
*/

int sum[]=new int[nums.length];
/**
* 02.让用户循环给数组  赋值
*/
for (int i = 0; i < sum.length; i++) {
System.out.println("输入第"+(i+1)+"个班级的学生成绩");
for (int j = 0; j < sum.length; j++) {
System.out.println("输入第"+(j+1)+"个学生成绩:");
nums[i][j]=scanner.nextInt();//学生成绩赋值
sum[i]=nums[i][j];//每个班级的总成绩
}
}
System.out.println("学生的成绩*************************");
for (int i = 0; i < nums.length; i++) {
for (int j = 0; j < nums.length; j++) {
System.out.println("输入第"+(i+1)+"个班级的第"+(j+1)+"个学生的成绩:"+nums[i][j]);
}
}
System.out.println("班级的成绩*************************");
for (int i = 0; i < sum.length; i++) {
System.out.println("第"+(i+1)+"个班级的总成绩:"+sum[i]);
}
}
public void test02(){
//有3个班各3名学生某门课程的成绩,
               //01.定义一个2维数组
int [][] scores=new int[3][3];
        Scanner scanner=new Scanner(System.in);
              //02.循环给学生赋值
        for (int i = 0; i < scores.length; i++) {
System.out.println("输入第"+(i+1)+"班级学生的成绩:===");
for (int j = 0; j < scores.length; j++) {
System.out.println("请输入第"+(j+1)+"个学生的成绩:");
scores[i][j]=scanner.nextInt();
}
}
        System.out.println("学生的成绩统计如下******************");
        // 如何计算3个班各自的总成绩?
        for (int i = 0; i < scores.length; i++) {
//每个班级都清零
        int sum=0;
        for (int j = 0; j < scores.length; j++) {
sum+=scores[i][j];
}
        System.out.println("第"+(i+1)+"班级学生成绩的总和==="+sum);
}
}
public static void main(String[] args) {
TestArrays03 test=new TestArrays03();
test.test01();
System.out.println("****************************");
test.test02();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值