关于数组的API应用练习:

1、数组元素的查找:binarySearch(String str, String objStr)方法能够实现对已排序的数组进行快速查找。
练习:快速查找数组a中的元素。
import java.util.Arrays;

public static void main(String[] args) {
String[] a = {“a”, “d”, “e”, “w”, “f”};
Arrays.sort(a); //现对数组元素排序
int index = Arrays.binarySearch(a, “f”);
System.out.println(“要查找的位置是:” + index);
}

2、数组的排序:只要数组对象实现了Comparable接口或具有相关联的Comparator接口,使用内置的排序方法,就可以对任意的基本类型数组排序,也可以对任意的对象数组进行排序。
练习:已经有数组String[] A = {“a”, “B”, “c”, “D”, “e”, “f”}; 对数组A进行排序。
分析:String默认的排序方法,第一步是将大写字母开头的词均放在小写字母开头的词的前面,然后才进行排序。

import java.util.Arrays;

public static void main(String[] args) {
String[] A = {“a”, “B”, “c”, “D”, “e”, “f”};
Arrays.sort(A);
System.out.println(Arrays.asList(A));
}

3、数组的复制:
public static void main(String[] args)
{ char[] copyFrom = { ‘d’, ‘e’, ‘c’, ‘a’, ‘f’, ‘f’, ‘e’, ‘i’, ‘n’, ‘a’, ‘t’, ‘e’, ‘d’};
char[] copyTo = new char[7];
System.arraycopy(copyFrom, 2, copyTo, 0, 7);
System.out.println(new String(copyTo));

注意:Java语言允许类型相同,而长度不同的两个数组互相赋值。赋值的结果是两个数组名指向同一数组。即:数组:a=b; vs a[i]=b[i];

读程序写结果1:
public static void main(String args[])
{ char chArr0 [ ]={’ ‘,’ ‘,’ ‘,‘过’,‘零’,‘丁’,‘洋’};
char chArr1[]={’ ‘,’ ‘,’ ‘,’ ‘,‘文’,‘天’,‘祥’,’ ‘,‘南’,‘宋’};
char chArr2[]={‘辛’,‘苦’,‘遭’,‘逢’,‘起’,‘一’,‘经’,’,’};
char chArray[]={‘干’,‘戈’,‘寥’,‘落’,‘四’,‘周’,‘星’,’。’ };
for(int j=0;j< chArr0.length;j++)
System.out.print(" “+chArr0[j]);
System.out.println(” “);
for(int j=0;j< chArr1.length;j++)
System.out.print(” “+chArr1[j]);
System.out.println(” “);
for(int j=0;j< chArr2.length;j++)
System.out.print(” “+chArr2[j]);
System.out.println(” “);
for(int i=0;i<chArray.length;i++)
System.out.print(” "+chArray[i]);
}

读程序写结果2:
import java.util.Random;
import javax.swing.JOptionPane;
public class ArrayExe01 {
public static void main(String args[]) {
String digitStr = JOptionPane.showInputDialog(“猜出现次数大于2的点数:”);
int digit = Integer.parseInt(digitStr); //所猜的点(出现次数大于2 )
int x[] = new int[7];//从下标1开始分别存放出现1~6点出现的次数
Random rd1 = new Random(); //创建随机数类对象
int num = 0; //保存每次模拟掷骰子的点数
for (int n = 0;n <= 12;n++) {//循环12次
num = 1 + rd1.nextInt(6);//生成1~6的随机点数
switch (num) {
case 1: x[1]++; break;//“1点"出现的次数
case 2: x[2]++; break;//“2点"出现的次数
case 3: x[3]++; break;
case 4: x[4]++; break;
case 5: x[5]++; break;
case 6: x[6]++; break;
}
}
System.out.println(“掷骰子12次后,各点数出现次数的统计结果:”);
for (int i =1; i < x.length; i++)
System.out.println(”\t出现” + i + “点:” + x[i] + “次”);
//显示猜的结果:“digit点”大于2次—赢;否则—输
if (x[digit] > 2)
System.out.println(digit + “点出现” + x[digit] + “次,你赢了!”);
else
System.out.println(digit + “点出现” + x[digit] + “次,你输了!”);
}
}

读程序写结果3:为一个4行5列的二维数组赋值,以4行5列的格式输出为矩阵形式,并求20个元素中的最大值、最小值,同志输出最值所在的行列位置。
public static void main(String[] args)
{
Scanner buf = new Scanner (System.in);
int[][] nums=new int[4][5];
int i=0,j=0,min,max,row1=0,row2=0,col1=0,col2=0;
System.out.print(“输出一个四行五列的矩阵:”);
System.out.println();
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
nums[i][j]=buf.nextInt();
}
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
System.out.print(" “+nums[i][j]);
System.out.println();
}
min=Integer.MAX_VALUE;
max=Integer.MIN_VALUE;
for(i=0;i<4;i++)
{
for(j=0;j<5;j++)
{
if(nums[i][j]<min)
{
min=nums[i][j];
row1=i;
col1=j;
}
if(nums[i][j]>max)
{
max=nums[i][j];
row2=i;
col2=j;
}
}
}
System.out.print(“最小数是”+min);
System.out.println(”,在【"+(row1+1)+"】行【"+(col1+1)+"】列");
System.out.print(“最大数是”+max);
System.out.println(",在【"+(row2+1)+"】行【"+(col2+1)+"】列");
}

读程序写结果4:
有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
import java.util.Random;
public class insertNum{
public static void main(String[] args)
{ int temp=0;
int myarr[] = new int[12];
Random r=new Random();
for(int i=1;i<=10;i++)
myarr[i]=r.nextInt(1000);
for (int k=1;k<=10;k++)
System.out.print(myarr[k]+",");
for(int i=1;i<=9;i++)
for(int k=i+1;k<=10;k++)
if(myarr[i]>myarr[k])
{
temp=myarr[i];
myarr[i]=myarr[k];
myarr[k]=temp;
}
System.out.println("");
for (int k=1;k<=10;k++)
System.out.print(myarr[k]+",");

	   myarr[11]=r.nextInt(1000);
	   System.out.println("待插入的数是 : "+myarr[11]);
	   for(int k=1;k<=10;k++)
		   if(myarr[k]>myarr[11])
		   {
			   temp=myarr[11];
			   for(int j=11;j>=k+1;j--)
				   myarr[j]=myarr[j-1];
			   myarr[k]=temp;
		   }
	     System.out.println("");   
	   for (int k=1;k<=11;k++)
			  System.out.print(myarr[k]+",");

}
}

猜你喜欢

转载自blog.csdn.net/qq_46144237/article/details/105297075