java速学堂_速学堂 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;ivalue[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

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=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));

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值