根据最近几天对数组的学习,集成写了一个对数组增删改查的程序。
import java.util.Scanner;
class paixu_lianxi
{
//获取数组非零元素
public static int Getlength(int arr[])
{
int num = 0;
for(int i=0;i<arr.length;i++)
{
if(arr[i] == 0)
break;
num++;
}
return num;
}
//交换数组元素
public static void change(int arr[],int a,int b)
{
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
//冒泡排序
public static void maopaopaixu(int arr[])
{
int num = Getlength(arr);
for(int i=0;i<num-1;i++)
{
for(int j = 0;j<num-i-1;j++)
if(arr[j] > arr[j+1])
change(arr,j,j+1);
}
}
//输入数组
public static int[] shuru()
{
int arr[] =new int[40];
int arr_num;
Scanner input = new Scanner(System.in);
System.out.println("请输入数组元素,输入0结束输入:");
for(int i=0;i<arr.length;i++)
{
if((arr_num = input.nextInt())==0 )
break;
arr[i] = arr_num;
}
return arr;
}
//查看数组元素
public static void show(int arr[])
{
for(int i=0;i<arr.length;i++)
{
if(arr[i]==0)
break;
System.out.print(arr[i]+" ");
}
System.out.println(" ");
}
//查看数组元素
public static void show(int num)
{
if(num != -1)
System.out.println("你所查找的元素是第"+(num+1)+"个元素。\n");
else
System.out.println("找不到该元素。\n");
}
//查找元素
public static void findnum(int arr[])
{
System.out.println("请输入你所要查找的数字:");
Scanner input = new Scanner(System.in);
int key = input.nextInt();
show(find(arr,key));
}
//查找元素
public static int find(int arr[],int key)
{
int num = Getlength(arr);
for(int i = 0;i < num; i++)
if(arr[i] == key)
return i;
return -1;
}
//增加元素
public static void addnum(int arr[])
{
System.out.print("请输入增加的数字元素:");
Scanner input = new Scanner(System.in);
int key = input.nextInt();
maopaopaixu(arr);
int wei = 0;
int num = Getlength(arr);
if(num==40)
{
System.out.println("数组已满,无法继续增加元素。\n");
}
else
{
for(int i=0;i<num-1;i++)
if(arr[i]<=key)
wei++;
add(arr,wei,key,num);
System.out.println("增加元素后的数组为:");
maopaopaixu(arr);
show(arr);
}
}
//增加元素
public static void add(int arr[],int wei,int key,int num)
{
arr[num+1] = 0;
for(int i=num;i>wei;i--)
{
arr[i] = arr[i-1];
}
arr[wei] = key;
}
//删除元素
public static void delnum(int arr[])
{
System.out.print("请输入删除的数字元素:");
Scanner input = new Scanner(System.in);
int key = input.nextInt();
maopaopaixu(arr);
int wei = 0;
int num = Getlength(arr);
if(num==0)
{
System.out.println("数组已空,无法继续删除元素。\n");
}
else
{
wei = find(arr,key);
if(wei == -1)
{
show(wei);
}
else
{
del(arr,wei,num);
System.out.println("删除元素后的数组为:");
show(arr);
}
}
}
//删除元素
public static void del(int arr[],int wei,int num)
{
if(wei == num)
arr[num] =0;
else
{
for(int i=wei;i<num;i++)
{
arr[i] = arr[i+1];
}
}
}
//主函数
public static void main(String[] args)
{
int arr[];
arr =shuru();
System.out.println("输入的数组为:");
show(arr);
Scanner input = new Scanner(System.in);
int num_function;
w:while(true)
{
System.out.println(" ");
System.out.println("---------------------------------------------------------------");
System.out.println("1.查看数组\t 2.排序数组\t 3.查找元素\t");
System.out.println("4.增加元素\t 5.删除元素\t 6.退出程序\t");
System.out.println("---------------------------------------------------------------");
System.out.print("请输入功能号码:");
num_function = input.nextInt();
switch(num_function)
{
case 1:
System.out.println("数组为:");
show(arr);
break;
case 2:
System.out.println("排序后的数组为:");
maopaopaixu(arr);
show(arr);
break;
case 3:findnum(arr);break;
case 4:addnum(arr);break;
case 5:delnum(arr);break;
case 6:System.out.println("程序结束");break w;
default:System.out.println("输入错误!");break w;
}
}
}
}
|
|