day06-数组

数组创建

数组在内存中是一块连续的空间,可以保存相同类型多个数据的容器(数组是定长的)
动态初始化:

  • 语法1: 数据类型[] 数组名 = new 数据类型[长度];
  • 语法2: 数据类型 数组名[] = new 数据类型[长度];

静态初始化

  • 语法1:数据类型[] 数组名 = {数据1,数据2,…};
  • 语法2:数据类型 数组名[] = {数据1,数据2,…};
  • 语法3:数据类型[] 数组名 = new 数据类型[]{数据1,数据2,…};

可变参数

数据类型… 参数名(int… a)
特点:可以是0个或者是多个,可变参数只能放在参数列表的最后,可变参数可以当做数组来使用,也可以将数组作为参数

public static void m1(int... a) {
    System.out.println(a[0]);
    System.out.println(a[1]);
}

传递方式

值传递和引用传递

  • 值传递:传递的是值,所以原来的值本身不会改变,所有的基本类型+String都属于值传递
  • 引用传递:传递的是地址,所以会对原来的内容有影响,所有引用数据类型都属于引用传递
排序方法

冒泡排序:

package com.jsh.day06;

import java.lang.reflect.Array;
import java.util.Arrays;

public class Demo02 {
	
	public static void main(String[] args) {
		int[] arr = {11,32,45,65,78,23,5,23,42,34,25};
		//sort2(arr);
		Arrays.sort(arr);
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i]+",");
		}
	}
	/*
	 * 冒泡排序
	 */
	public static void sort1(int arr[]) {
		for (int j = 0; j < arr.length-1; j++) {
			for (int i = 0; i < arr.length-1; i++) {
				if(arr[i]>arr[i+1]) {
					int t=arr[i];
					arr[i]=arr[i+1];
					arr[i+1]=t;
				}
				
			}
		}
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i]+",");
		}
	}
	/*
	 * 优化1:每轮比较次数
	 */
	public static void sort2(int arr[]) {
		for (int j = 0; j < arr.length-1; j++) {
			for (int i = 0; i < arr.length-1-j; i++) {//最后j位不比较
				if(arr[i]>arr[i+1]) {
					int t=arr[i];
					arr[i]=arr[i+1];
					arr[i+1]=t;
				}
				
			}
		}
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i]+",");
		}
	}
	/*
	 * 优化2:比较轮数
	 */
	public static void sort3(int arr[]) {
		for (int j = 0; j < arr.length-1; j++) {
			boolean flag=true;//信号量
			for (int i = 0; i < arr.length-1-j; i++) {//最后j位不比较
				if(arr[i]>arr[i+1]) {
					int t=arr[i];
					arr[i]=arr[i+1];
					arr[i+1]=t;
					flag=false;
				}
			}
			if (flag) {
				break;
			}
		}
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i]+",");
		}
	}
	
}

选择排序:

package com.jsh.day06;

public class Demo03 {
	public static void main(String[] args) {
		int [] arr= {1454,23,123,43,5,65,76,32};
		sort1(arr);
	}
	//选择排序
	public static void sort1(int array[]) {
		for (int i = 0; i < array.length-1; i++) {
			int min =i;
			for (int j = i+1; j < array.length; j++) {
				if(array[min]>array[j]) {
					int t=array[j];
					array[j]=array[min];
					array[min]=t;
				}
			}
		}
		for (int j = 0; j < array.length; j++) {
			System.out.print(array[j]+",");
		}
	}

}

练习(管理系统)
package com.jsh.day06;

import java.util.Arrays;
import java.util.Scanner;

import javax.swing.text.StyleContext.NamedStyle;

public class WifeManager {
	//表示所有wife
	static String [] names= {};
	//表示數組中有效元素個數
	static int size =0;
	//判斷商品是否存在
	public static int exists(String name) {
		for (int i = 0; i < size; i++) {
			if(names[i].equals(name)) {
				return i;
			}
		}
		return -1;
	}
	public static void add(String name) {
		//1.判斷數組是否需要擴容
		if(size==names.length) {
			names=Arrays.copyOf(names, names.length+5);
		}
		//2.判斷商品是否存在
		int index=exists(name);
		if(index!=-1) {
			System.out.println("商品已經存在");
			return;
		}
		//3.將商品添加到數組中
		names[size]=name;
		//4.size++
		size++;
	}
	public static void delete(String name) {
		//2.判斷商品是否存在
		int index=exists(name);
		if(index==-1) {
			System.out.println("商品不存在,無法刪除");
			return;
		}else {
			for (int i = index; i < size-1; i++) {
				names[i]=names[i+1];
			}
			names[size-1]=null;
			size--;
		}	
	}
	public static void updata(String oldName,String newName) {
		//2.判斷商品是否存在
		int index=exists(oldName);
		if(index==-1) {
			System.out.println("商品不存在,無法修改");
			return;
		}
		//2.判斷新商品是否存在
		int index2=exists(newName);
		if(index2!=-1) {
			System.out.println("商品已存在,無法修改");
			return;
		}
		names[index]=newName;
	}
	public static void select() {
		if(size==0) {
			System.out.println("暫無商品");
		}else {
			for (int i = 0; i < size; i++) {
				System.out.print(names[i]+"\t");
			}
			System.out.println();
		}
	}
	public static void menu() {
		System.out.println("歡迎來到老婆管理系統");
		Scanner input=new Scanner(System.in);
		System.out.println("請問您是否需要老婆:");
		String wife = input.next();
		if(wife.equals("否")) {
			System.out.println("您已被踢出群聊");return;
		}else if(wife.equals("是")) {
			boolean flag=true;
			while(flag) {
				System.out.println("您可以通過老婆管理系統進行如下操作:");
				System.out.println("1.增加老婆\t2.修改老婆\t3.刪除老婆(不建議)\t4.查詢老婆\t5.退出");
				System.out.println("輸入您要進行的操作:");
				int n=input.nextInt();
				switch(n) {
					case 1: 
						System.out.println("請輸入要添加的老婆:");
						String a1=input.next();
						add(a1);
						break;
					case 2: 
						System.out.println("請輸入要修改的老婆:");
						String a2=input.next();
						System.out.println("請輸入修改后的老婆:");
						String a3=input.next();
						updata(a2,a3);
						break;
					case 3: 
						System.out.println("請輸入要刪除的老婆:");
						String a4=input.next();
						delete(a4);
						break;
					case 4: 
						System.out.println("您擁有的老婆有:");
						select();
						System.out.println();
						break;
					case 5: 
						flag=false;
						break;
				}
			}
		}else {
			System.out.println("請正確輸入內容!");
		}
		
	}
	public static void main(String[] args) {
		add("香菱");
		menu();
	
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值