速学堂 Java第七章练习

一、选择题
1.ACD
2.B
3.BC
4.B
5.BD
二、 简答题
1.数组的特点
a.数组的长度是确定的,数组一旦被创建,其长度是不可改变的
b.数组的数据类型必须是同一类型,不能有混合类型
c.数组的数据类型可以是基本类型也可以是引用类型
2.数组的优缺点
优点:按照索引查询元素快
能存储大量数据
按照索引遍历数组方便
缺点:根据内容查找元素速度慢
数组的大小一经确定不可改变
增加和删除数组元素的效率慢
只能存储一种数据类型
未封装任何方法,所有操作都需要用户自己定义
3.冒泡排序的算法。

package cn.sxt.arrays;

import java.util.Arrays;

/**
 * 测试冒泡排序及优化
 * @author Administrator
 *
 */
public class TestBubbleSort {
	public static void main(String[] args) {
		
		int[] value = {3, 1, 6, 2, 9, 0, 7, 4, 5, 8};
		int temp = 0;
		//比较大小并排序
		for(int i = 0;i<value.length-1;i++) {
			boolean flag = true;
				for(int j = 0;j<value.length-1-i;j++) {			
					if(value[j]>value[j+1]) {
						temp = value[j];
						value[j] = value[j+1];
						value[j+1] = temp;
						flag = false;
					}
				System.out.println(Arrays.toString(value));	
				}
				if(flag) {
					System.out.println("不进行交换,冒泡结束!");
					break;
				}	
			System.out.println("#######################");		
		}	
	}
}

4.数组的三种初始化方式是什么?
A.静态初始化:声明数组同时分配空间和赋值
B.动态初始化:先申明数组同时分配空间,后进行赋值
C.默认初始化:Java会自动为有空间的数组赋值,
三、编码题:
1.数组查找操作:定义一个长度为10 的一维字符串数组,在每一个元素存放一个单词;然后运行时从命令行输入一个单词,程序判断数组是否包含有这个单词,包含这个单词就打印出“Yes”,不包含就打印出“No”。

package cn.sxt.arrays;

import java.util.Arrays;

public class Exam01 {
	public static void main(String[] args) {
		//声明字符串数组并初始化
		String[] arr = {"hello","hi","how","what","why","you","me","am","is","are"};
		//定义关键词
		String keyWords = "hoi";
		//二分法查找关键字,并用索引值来判断是否存在
		int h =Arrays.binarySearch(arr, keyWords);
		if(h>=0&&h<arr.length) {
			System.out.println("yes");
		}else {
			System.out.println("no");
		}
	}
}

2.获取数组最大值和最小值操作:利用Java的Math类的random()方法,编写函数得到0到n之间的随机数,n是参数。并找出产生50个这样的随机数中最大的、最小的数,并统计其中>=60的有多少个。
提示:使用 int num=(int)(n*Math.random());获取随机数。

package cn.sxt.arrays;

import java.util.Arrays;

public class Exam02 {
	public static void main(String[] args) {
		//定义一个数组并随机赋0~100的值
		int n = 100;
		int[] sum = new int[50];
		for(int i = 0;i<sum.length;i++) {
			sum[i] = (int)(n*Math.random());
		}
		System.out.println(Arrays.toString(sum));
		//数组排序
		Arrays.sort(sum);
		System.out.println(Arrays.toString(sum));
		//遍历数组并确定其中数值大于等于60的个数
		int count = 0;
		for(int j = 0;j<sum.length;j++){
			if(sum[j]>=60) {
				count++;
			}
		}
		
		System.out.println("该随机数组的最小值为:"+sum[0]);
		System.out.println("该随机数组的最大值为:"+sum[49]);
		System.out.println("该随机数组中大于等于60的个数有:"+count);
	}
}

3.数组逆序操作:定义长度为10的数组,将数组元素对调,并输出对调前后的结果。
思路:把0索引和arr.length-1的元素交换,把1索引和arr.length-2的元素交换……
只要交换到arr.length/2的时候即可。

 package cn.sxt.arrays;

import java.util.Arrays;

public class Exam03 {
	public static void main(String[] args) {
		//声明一个数组
		int[] a = {0,1,2,3,4,5,6,7,8,9};
		//拷贝原数组
		int[] b = new int[10];
		System.arraycopy(a, 0, b, 0, 10);		
		//对数组进行逆序操作
		int temp = 0;
		for(int i = 0;i<=a.length/2;i++) {
			temp = a[i];
			a[i] = a[a.length-1-i];
			a[a.length-1-i] = temp;	
		}
		//打印输出
		System.out.println("原数组:"+Arrays.toString(b));	
		System.out.println("逆序数组:"+Arrays.toString(a));		
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值