数组的示例
示例1:在数组中查找指定元素的出现的第一次的位置,
如果该数组中存在要查找的元素,则返回其下标;否则返回-1
import java.util.Scanner;
public class TestArrays{
int index=-1;//定义数组下标位置
int []arr={12,15,65,37,49,51};//定义一个数组并赋值
Scanner input =new Scanner(System.in);
int scanner =input.nextInt();//获取用户输入
for(int d:arr){
if(d==scanner){
d=index;
break;
}
}
if(index!=-1){
System.out.println("你要找的数组下标位置是:"+index);
}else{
System.out.println("不存在");
}
}
示例2:
查询数组中的最大值和最小值,并输入其下标位置
实现思路:
假设第一个元素是最大的,将其后的元素挨个与max进行比较,如果当前元素大于max,当前元素就是最大的
假设第一个元素是最小的,将其后的元素挨个与min进行比较,如果当前元素小于min,当前元素就是最小的
int []arr={21,62,48,98,88,51};//定义一个数组并赋值
int max =arr[0];//假设第一个元素为最大值
int min=arr[0];//假设第一个元素为最小值
int max_index;//记录最大值坐标
int min_index;//记录最小值坐标
for(int i=0;i<arr.length;i++){
if(max<arr[i]){//获取最大值 第一个元素比最大的还大
max=arr[i];//将最大值赋值给max
max_index=i;
}
if(min>arr[i]){
min=arr[i]
min_index=i;
}
}
System.out.println("数组中元素的最大值为:"+max+",下标为:"+max_index);
System.out.println("数组中元素的最小值为:"+min+",下标为:"+min_index);
示例3:生成一个4位有字母或数字组成的随机字符串作为验证码
char[] codes=new char[60];//用于保存A~Z,a~z,0~9的字符
//A(65)~Z(90)字符对应的ASCII码值
for(int i=65;i<=90;i++){
char c=(char)i;
codes[i-65]=c;将A~Z的字符保持到数组下标0~26的位置
}
//a(97)~z(122)字符对应的ASCII码值
for(int i=97;i<=122;i++){
char c=(char)i;
codes[i-71]=c;//将A~Z的字符保持到数组下标26~51位置
}
//0(48)~9(57)字符对应的ASCII码值
for(int i=48;i<=57;i++){
char c=(char)i;
code[i+48]=c;//将0~9字符保持到数组下标52~65位置
}
//随机产生4个下标[0~62]
for(int i=0;i<4;i++){
int index =(int}(Math.random()*62);//产生[0~62]的随机数
str+=codes[index];//将字符拼接到str中
}
System.out.println("验证码为:"+str);
示例4
在数组中删除元素:
通过下标删除:将指定下标的元素从数组中移除
思路:
下标为i以后的元素向前平移一个位置,将最后的元素清零
nums[i]=nums[i+1];
nums[nums.length-1]=0
问题:删除数组中元素效率较低(需要将数组中的元素大量进行平移)
int []arr={10,20,30,40,50,60};/定义数组并赋值
System.out.println("请输入你要移除的下标(0~5)");
Scanner input =new Scanner(System.in);
int index =input.nextInt();
System.out.println("删除前:");
for(int num:arr){
System.out.println(n+"\t");
}
//删除元素
deleteElement(arr,index);
System.out.println("删除后");
for(int n:arr){
System.out.println(n+"\t")
}
/*删除数组arr中指定下标的元素*/
public static void deleteElement(int[] arr,int index){
if(index>=0&&index<=5){
for(int i=index;i<arr.length-1;i++0){
arr[i]=arr[i+1];//将下标为i元素后的元素进行平移
}
arr[arr.length-1]=0;//将最后一个元素进行清零
}else{
System.out.println("输入有误");
}
}
示例5:冒泡排序:
N个数字的来排队,两两比较小靠前
外层循环(控制比较的轮数)N-1,内层循环(每轮需要比较的次数)N-1-i;
public static void main(String[] args){
int []arr={1,9,8,5,4,6,2,};
//控制比较的轮数:每轮比较之后可以确定一个最大的
for(int i=0;i<6;i++){
//控制每轮需要比较的次数
for(int j=0;j<6-i;j++){
if(arr[j]>arr[j+1]){
//交换位置
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println("排序后");
for(int a:arr){
System.out.println(a+"\t");
}
}