Day04——一维数组的定义创建与使用
一、本章内容
二、数组的定义和创建
数组的定义三种常见方法以及调用方法打印遍历数组里所有的元素
package com.neusoft;
public class ArrayDemo {
public static void main(String[] args) {
// 数组的三种定义Demo
String arr[] = new String[] { "red", "yellow", "black", "green" };
String arr1[] = new String[4];
arr1[0] = "爱";
arr1[1] = "我";
arr1[2] = "中";
arr1[3] = "华";
String arr2[] = { "red", "yellow", "black", "green" };
// 调用数组的打印方法
Print(arr);
Print(arr1);
Print(arr2);
}
// 使用的方法打印数组的所有的元素
public static void Print(String arr[]) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + "\t");
}
System.out.println("");
}
}
三、习题
1.编写一个简单程序,要求数组长度为5,分别赋值10,20,30,40,50,在控制台输出该数组的值。
package com.neusoft;
public class ArrayTest {
// 编写一个简单程序,要求数组长度为5,分别赋值10,20,30,40,50,在控制台输出该数组的值。(知识点:数组定义和创建、一维数组初始化)[必做题]
public static void main(String[] args) {
int arr [] =new int[]{10,20,30,40,50};
for(int i = 0;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
}
}
2.给定一维数组{ -10,2,3,246,-100,0,5},计算出数组中的平均值、最大值、最小值。(知识点:数组遍历、数组元素访问)
package com.neusoft;
public class ArrayTest3 {
// 给定一维数组{ -10,2,3,246,-100,0,5},计算出数组中的平均值、最大值、最小值。(知识点:数组遍历、数组元素访问) [选作题]
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = { -10, 2, 3, 246, -100, 0, 5 };
GetMax(arr);
GetMin(arr);
GetAvg(arr);
}
public static int GetMax(int[] arr) {
int max = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
System.out.println("最大值是" + max);
return max;
}
public static int GetMin(int[] arr) {
int min = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
System.out.println("最大值是" + min);
return min;
}
public static int GetAvg(int [] arr){
int avg = 0;
int sum = 0;
for(int i = 0;i<arr.length;i++){
sum+=arr[i];
}
avg = sum/arr.length;
System.out.println("数组内的所有数字的平均值是"+avg);
return avg;
}
}
3.数组查表法(根据键盘录入索引,查找对应星期) 意思是:String[] strArray = {“星期一”,”星期二”,…};
package com.neusoft;
import java.util.Scanner;
public class ArrayTest4 {
/*
* 数组查表法(根据键盘录入索引,查找对应星期) 意思是:String[] strArray = {"星期一","星期二",...};
*/
public static void main(String[] args) {
while (true) {
Scanner sc = new Scanner(System.in);
String[] arr = { "周一", "周二", "周三", "周四", "周五", "周六", "周日" };
System.out.print("请输入数字(0-6)");
int index = sc.nextInt();
System.out.println("您输入的天数为" + arr[index]);
}
}
}
4.遍历数组里的所有元素,并输出(使用for each方法)
package com.neusoft;
/**
* 本实例提供一个方法快速遍历数组元素
* @author Elvis
*
*/
public class BianLiShuZu {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr [] =new int[]{10,20,30,40,50};
for (int i : arr) {
System.out.print(i +"\t");
}
}
}
5.数组的插入算法(实例:有一个数组nums和一个新数组newNums,newNums采用动态初始化,在控制台任意输入一个数组元素x,在新数组newNums中进行输出操作)
提示:编写程序是有这样几个要点:
1.先静态初始化一个数组
2.动态初始化一个数组(nums.length+1)
3.控制台输入一个元素num
4.遍历原数组的所有元素
5.利用Arrays.sort()方法对数组进行排序
6.为输入的数据找到插入的相应位置(判断数值的大小)
7.向newArray数组内复制数据
8.输出插入元素之后的新的newArray
(一律采用for each的方法来遍历数组)
package com.neusoft;
import java.util.Arrays;
import java.util.Scanner;
/**
* 数组的插入算法
*
* @author Elvis
*
*/
public class ArrayInsert {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 定义一个初始的数组变量,创建数组
int nums[] = new int[] { 134, 1232, 33, 42, 85, 90, 2344 };
// 定义一个新的数组变量,数组长度是原来的数组的长度+1
int newNums[] = new int[nums.length + 1];
// 声明要插入的新数据的变量
System.out.println("请插入数据");
int num = sc.nextInt();
//为输入的数据定义位置
int index = nums.length;
Arrays.sort(nums);
for (int i : nums) {
System.out.print(i + "\t");
}
//为输入的数据找到插入的相应位置
for (int i = 0; i < nums.length; i++) {
//判断数值的大小
if(nums[i]>num){
index = i;
break;
}
}
//向目标数组内复制数据
for (int i = 0; i < newNums.length; i++) {
if(i<index){
newNums[i] = nums[i];
}else if(i == index){
newNums[i] = num;
}else{
newNums[i]=nums[i-1];
}
}
System.out.println("");
System.out.println("数组插入结果为");
for (int i:newNums){
System.out.print(i+"\t");
}
}
}
6.复制数组的两种算法
(1)使用System.arraycopy()方法复制数组
(2)使用Arrays.copyOf()方法复制数组
(1)
package com.neusoft;
public class ArrayCopy {
// 数组的复制
public static void main(String[] args) {
// TODO Auto-generated method stub
int nums[] = new int[] { 11, 12, 13, 14, 15 };
int newnums[] = new int[nums.length];
// 使用System.arraycopy的方法进行数组的复制
//System.arraycopy(src, srcPos, dest, destPos, length)
System.arraycopy(nums, 0, newnums, 0, 5);
for (int i : newnums) {
System.out.print(i + "\t");
}
}
}
(2)
package com.neusoft;
import java.util.Arrays;
public class ArrayCopy2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int nums[] = new int[] { 11, 12, 13, 14, 15 };
// 使用arrays.copyof的方法进行数组的复制
//int newnums[] = Arrays.copyOf(original, newLength)
int newnums[] = Arrays.copyOf(nums, 5);
// 利用for each 的方法输出这个数组的所有元素
for (int i : newnums) {
System.out.print(i + "\t");
}
}
}