面試題目:創建一個長度為6的int型數組,要求取值為1-30,同時元素值各不相同
//方式一:

int[] arr = new int[6];
for (int i = 0; i < arr.length; i++) {// [0,1) [0,30) [1,31)
	arr[i] = (int) (Math.random() * 30) + 1;
boolean flag = false;
	while (true) {
		for (int j = 0; j < i; j++) {
			if (arr[i] == arr[j]) {
				flag = true;
				break;
			}
		}
		if (flag) {
			arr[i] = (int) (Math.random() * 30) + 1;
			flag = false;
			continue;
		}
		break;
	}
}
 for (int i = 0; i < arr.length; i++) {
	System.out.println(arr[i]);
}

//方式二

int[] arr = new int[6];
    for (int i = 0; i < arr.length; i++) {// [0,1) [0,30) [1,31)
    	arr[i] = (int) (Math.random() * 30) + 1;
    	
    		for (int j = 0; j < i; j++) {
    			if (arr[i] == arr[j]) {
    				i--;
    				break;
    			}
    		}
    	}
    
    for (int i = 0; i < arr.length; i++) {
    	System.out.println(arr[i]);
    }

從鍵盤輸入一個整數(1~20)
則以該數字為矩陣的大小,把1,2,3…n*n 的數字按照順時針螺旋的形式填入其中。例如: 輸入數字2,則程序輸出: 1 2 4 3
輸入數字3,則程序輸出: 1 2 3 8 9 4 7 6 5
輸入數字4, 則程序輸出:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7

Scanner scanner = new Scanner(System.in);
System.out.println("輸入一個數字");
int len = scanner.nextInt();
int[][] arr = new int[len][len];

int s = len * len;
/*
* k = 1:向右
* k = 2:向下
* k = 3:向左
* k = 4:向上
*/

    int k = 1;
    int i = 0,j = 0;
    for(int m = 1;m <= s;m++){
    if(k == 1){
    	if(j < len && arr[i][j] == 0){
    		arr[i][j++] = m;
    	}else{
    		k = 2;
    		i++;  
    		j--;
    		m--;
    	}
    }else if(k == 2){
    	if(i < len && arr[i][j] == 0){
    		arr[i++][j] = m;
    	}else{
    		k = 3;
    		i--;
    		j--;
    		m--;
    	}
    }else if(k == 3){
    	if(j >= 0 && arr[i][j] == 0){
    		arr[i][j--] = m;
    	}else{
    		k = 4;
    		i--;
    		j++;
    		m--;
    	}
    }else if(k == 4){
    	if(i >= 0 && arr[i][j] == 0){
    		arr[i--][j] = m;
    	}else{
    		k = 1;
    		i++;
    		j++;
    		m--;
    	}
    }
    }
    
    //遍歷
    for(int m = 0;m < arr.length;m++){
    for(int n = 0;n < arr[m].length;n++){
    	System.out.print(arr[m][n] + "\t");
    }
    System.out.println();
    }

打印數組:
01 02 03 04 05 06 07
24 25 26 27 28 29 08
23 40 41 42 43 30 09
22 39 48 49 44 31 10
21 38 47 46 45 32 11
20 37 36 35 34 33 12
19 18 17 16 15 14 13

int n = 7;
int[][] arr = new int[n][n];
int count = 0; //要顯示的數據
int maxX = n-1; //x軸的最大下標
int maxY = n-1; //Y軸的最大下標
int minX = 0; //x軸的最小下標
int minY = 0; //Y軸的最小下標
while(minX<=maxX) {
	for(int x=minX;x<=maxX;x++) {
		arr[minY][x] = ++count;
	}
	minY++;
	for(int y=minY;y<=maxY;y++) {
		arr[y][maxX] = ++count;
	}
	maxX--;
	for(int x=maxX;x>=minX;x--) {
		arr[maxY][x] = ++count;
	}
	maxY--;
	for(int y=maxY;y>=minY;y--) {
		arr[y][minX] = ++count;
	}
	minX++;
}
for(int i=0;i<arr.length;i++) {
	for(int j=0;j<arr.length;j++) {
		String space = (arr[i][j]+"").length()==1 ? "0":"";
		System.out.print(space+arr[i][j]+" ");
	}
	System.out.println();
}

創建一個char類型的26個元素的數組,分別 放置’A’-'Z‘。
使用for循環訪問所有元素並打印出來。
提示:char類型數據運算 ‘A’+1 -> ‘B’,‘0’+1 -> '1‘

//1.聲明並開闢長度
char[] chs = new char[26];
//2.手動賦值
for(int i=0;i<chs.length;i++){
	chs[i] = (char)('A'+i);
}
//3.打印
for(int i=0;i<chs.length;i++){
	System.out.println(chs[i]);
}

有一個數列:白眉鷹王、金毛獅王、紫衫龍王、青儀斧王
猜數遊戲:從鍵盤中任意輸入一個名稱,判斷數列中是否包含此名稱 【查找】

Scanner input = new Scanner(System.in);
//1.聲明並初始化
String[] names = {"白眉鷹王","青易斧王","金毛獅王","紫衫龍王"};
//2.查找
System.out.println("請輸入你要查找的名:");
String search = input.next();
/*----------------核心的查找------------
	查找:線性查找、二分查找
	線性查找:依次將數組中的元素提取出來和要查找進行匹配
	二分查找:要求待查找的數組已經排好序,查找效率較高
*/
boolean flag = false;
for(int i=0;i<names.length;i++){
	if(names[i].equals(search)){//找到了
		System.out.println("找到了,下標是:"+i);
		flag = true;
		break;
	}
}
if(!flag){
	System.out.println("沒找到");
}

冒泡排序算法

int[] arr = {2,3,4,1,5};
//排序
/*
	i	j		
	0	0		arr[0] vs arr[1]
		1		arr[1] vs arr[2]
		2		arr[2] vs arr[3]
		3		arr[3] vs arr[4]
*/
for(int i=0;i<arr.length-1;i++){//外層循環。 i:控制輪數
	//循環操作:每一輪發生的事情
	for(int j=0;j<arr.length-1-i;j++){//內層循環。j:控制比較的次數
		//循環操作:每一次發生的事情(比較)
		if(arr[j]<arr[j+1]){
			//交換兩個相鄰元素
			int temp = arr[j];
			arr[j]  = arr[j+1];
			arr[j+1] = temp;
		}
	}
}
//打印
for(int i=0;i<arr.length;i++){
	System.out.print(arr[i]+"\t");
}
System.out.println();

(1)創建一個名為TestArray的類,在main()方法中聲明array1和array2兩個變量,他們是int[]類型的數組。
(2)使用大括號{},把array1初始化為8個素數:2,3,5,7,11,13,17,19。
(3)顯示array1的內容。
(4)賦值array2變量等於array1,修改array2中的偶索引元素,使其等於索引值(如array[0]=0,array[2]=2)。打印出array1。

數組的賦值方式一:賦的是地址

//基本類型
int a = 10;
int b=a;
b=9999;
System.out.println("a="+a+",b="+b);
int[] array1 = {2,3,5,7,11,13,17,19};
int[] array2 = array1;//數組的賦值
//打印修改前的array1和array2
System.out.println("---------修改前的array1-------------");
for(int i=0;i<array1.length;i++){
	System.out.print(array1[i]+"\t");
}
System.out.println("\n---------修改前的array2-------------");
for(int i=0;i<array2.length;i++){
	System.out.print(array2[i]+"\t");
}
System.out.println();
//修改array2
for(int i=0;i<array2.length;i++){
	if(i%2==0){
		array2[i] = i;
	}
}
//打印修改後的array1和array2
System.out.println("---------修改後的array1-------------");
for(int i=0;i<array1.length;i++){
	System.out.print(array1[i]+"\t");
}
System.out.println("\n---------修改後的array2-------------");
for(int i=0;i<array2.length;i++){
	System.out.print(array2[i]+"\t");
}
System.out.println();

數組的賦值方式二:賦的僅僅是內容

int[] array1 = {2,3,5,7,11,13,17,19};
//賦值
int[] array2 = new int[array1.length];
for(int i=0;i<array2.length;i++){
	array2[i] = array1[i];
}
//打印修改前的array1和array2
System.out.println("---------修改前的array1-------------");
for(int i=0;i<array1.length;i++){
	System.out.print(array1[i]+"\t");
}
System.out.println("\n---------修改前的array2-------------");
for(int i=0;i<array2.length;i++){
	System.out.print(array2[i]+"\t");
}
System.out.println();
//修改array2
for(int i=0;i<array2.length;i++){
	if(i%2==0){
		array2[i] = i;
	}
}
//打印修改後的array1和array2
System.out.println("---------修改後的array1-------------");
for(int i=0;i<array1.length;i++){
	System.out.print(array1[i]+"\t");
}
System.out.println("\n---------修改後的array2-------------");
for(int i=0;i<array2.length;i++){
	System.out.print(array2[i]+"\t");
}
System.out.println();

反轉:隨機生成五個數,並將其反轉打印
1 3 5 2 4 1 length/2-1
4 2 5 3 1
12345678 3 length/2-1
87654321
交換兩個數
arr[0]——arr[length-1] length-1-i
arr[1]——arr[length-2] length-1

arr[length/2-1]

方式一:找規律

//1.聲明並開闢空間
int[] arr = new int[5];
//2.賦值
for(int i=0;i<arr.length;i++){
	arr[i] = (int)(Math.random()*100+1);
}
System.out.println("反轉前");
for(int i=0;i<arr.length;i++){
	System.out.print(arr[i]+"\t");
}
System.out.println();
//3.使用
for(int i=0;i<arr.length/2;i++){
	//交換兩個數   i vs arr.length-1-i
	int temp = arr[i];
	arr[i] = arr[arr.length-1-i];
	arr[arr.length-1-i] = temp;
}
System.out.println("反轉後");
for(int i=0;i<arr.length;i++){
	System.out.print(arr[i]+"\t");
}
System.out.println();

方式二:數組的賦值

//1.聲明並開闢空間
int[] arr = new int[5];
//2.賦值
for(int i=0;i<arr.length;i++){
	arr[i] = (int)(Math.random()*100+1);
}
System.out.println("反轉前");
for(int i=0;i<arr.length;i++){
	System.out.print(arr[i]+"\t");
}
System.out.println();
//3.使用
//①創建一個新數組,長度=arr.length
int[] newArr = new int[arr.length];
//②逆序賦值
/*
i
0	arr.length-1
1	arr.length-2
*/
for(int i=0,j=arr.length-1;i<arr.length;i++,j--){
	newArr[j]=arr[i];
}
//③將新數組的地址賦值給arr
arr=newArr;

System.out.println("反轉後");
for(int i=0;i<arr.length;i++){
	System.out.print(arr[i]+"\t");
}
System.out.println();

數組的高級使用:增加和插入
添加

Scanner input = new Scanner(System.in);
//聲明並初始化
int[] arr = {2,3,1,4,6};
//打印
System.out.println("原始數組的元素如下");
for(int i=0;i<arr.length;i++){
	System.out.print(arr[i]+"\t");
}
System.out.println();
do{
	//-----------------增加---------------------
	System.out.print("請輸入要添加的元素:");
	int add = input.nextInt();
	//----------------具體的添加業務----------
	//①新建一個數組,長度=arr.length+1
	int[] newArr = new int[arr.length+1];

	//②依次為新數組的元素賦值
	for(int i=0;i<arr.length;i++){
		newArr[i] = arr[i];
	}
	//③將add賦值到新數組的空位上
	newArr[newArr.length-1] = add;
	//④將newArr的地址賦值給arr
	arr = newArr;
	System.out.println("添加成功!");
	System.out.println("是否繼續添加?Y/N");
	char key = input.next().toUpperCase().charAt(0);//將字符串轉換成大寫,然後再提取第一個字符
	if(key=='N')
		break;
}while(true);
//打印
System.out.println("添加後的元素如下");
for(int i=0;i<arr.length;i++){
	System.out.print(arr[i]+"\t");
}
System.out.println();

插入

Scanner input = new Scanner(System.in);
//聲明並初始化
int[] arr = {2,3,1,4,6};
//打印
System.out.println("原始數組的元素如下");
for(int i=0;i<arr.length;i++){
	System.out.print(arr[i]+"\t");
}
System.out.println();
do{
//----------------------插入--------------------
System.out.print("請輸入要插入的元素:");
int add = input.nextInt();
System.out.print("請輸入要插入的位置:");
int index = input.nextInt();
//----------------------具體的插入業務-----------
//①創建新數組,長度=arr.length+1
int[] newArr = new int[arr.length+1];
//②循環賦值
for(int i=0;i<arr.length;i++){
	newArr[i] = arr[i];
}
//③循環後移
for(int i=newArr.length-1;i>index;i--){
	newArr[i]=newArr[i-1];
}
//④將新元素賦值到index位置上
newArr[index] = add;
//⑤將newArr的地址賦值給arr
arr = newArr;
System.out.println("插入成功!");
System.out.println("是否繼續添加?Y/N");
	char key = input.next().toUpperCase().charAt(0);//將字符串轉換成大寫,然後再提取第一個字符
	if(key=='N')
		break;
}while(true);
System.out.println("插入後的元素如下:");
for(int i=0;i<arr.length;i++){
	System.out.print(arr[i]+"\t");
}
System.out.println();