Java - 数组小练习(二) June 2,2019
6.给定两个数组a{1,2,3} b{4,5} 合并两个数组 (创建一个新的数组5长度)
public class Array { public static void main(String[] args){ int [] arrayA = new int[]{1, 2, 3}; int [] arrayB = new int[]{4, 5}; int [] newArray = new int[arrayA.length + arrayB.length]; for(int i = 0; i < newArray.length; i++){ if(i < arrayA.length) { newArray[i] = arrayA[i]; }else{ newArray[i] = arrayB[i - arrayA.length]; } } for(int var : newArray){ System.out.println(var); } } }
7.给定一个数组a{1,2,3,9,4,5} 按照数组中的最大值位置 将数组拆分成两个{1,2,3,9} {4,5}
public class Array { public static void main(String[] args){ int [] array = new int[]{1, 2, 3, 9, 4, 5}; int max = array[0]; int index = 0; for(int i = 0; i < array.length; i++){ if(max < array[i]) { max = array[i]; index = i; } } int [] arrayNewA = new int[index+1]; int [] arrayNewB = new int[array.length - arrayNewA.length]; for(int i = 0; i < array.length; i++){ if(i < index+1){ arrayNewA[i] = array[i]; }else{ arrayNewB[i - index-1] = array[i]; } } for(int var : arrayNewA){ System.out.println(var); } System.out.println("---------------"); for(int var : arrayNewB){ System.out.println(var); } } }
8.给定一个数组a{1,2,3,0,0,4,5,0,6,0,7} 去掉数组中的0元素 (创建一个新数组 短的 非零元素挑出来)
//去除数组中的0元素 public class ArrayRemoveZero { public void RemoveZero(int[]arrayA){ System.out.println("原数组元素:"); for (int result:arrayA){ System.out.println(result+"\t"); } int count = 0;//用来记录0元素个数 for (int i=0;i<arrayA.length;i++){ if(arrayA[i]==0){ count++; } } int index = 0; int[] newArray = new int[arrayA.length-count];//创建一个数组存储 for(int i=0;i<arrayA.length;i++){ if(arrayA[i]!=0){ newArray[index++] = arrayA[i]; } } System.out.println("新数组元素:"); for (int result:newArray){ System.out.println(result+"\t"); } } }
9.创建一个数组 存储2-100之间的素数(质数)
方法一: 空间占用小,执行效率慢 ①通过一个几千次的循环确定应该创建的数组的长度 ②通过一个几千次循环找寻素数,将素数存入数组内 public class Array { public static void main(String[] args){ int count = 0; for(int num = 2; num <= 100; num++){ for(int i = 2; i <= num/2; i++){ if(num % i ==0){ count++; break; } } } int index = 0; int [] array = new int [99 - count]; for(int num = 2; num <= 100; num++){ boolean flag = false; for(int i = 2; i <= num/2; i++){ if(num % i ==0){ flag = true; break; } } if(!flag){ array[index++] = num; } } for(int var : array){ System.out.println(var); } } } 方法二: 执行效率高 空间占用大 ①创建一个足够长的数组,并且通过几千次循环找寻素数,将其存入数组 ②将数组素数后的0元素删除 public class Array { public static void main(String[] args){ int [] array = new int [50]; int index = 0; for(int num = 2; num <= 100; num++){ boolean flag = false; for(int i = 2; i <= num/2; i++){ if(num % i ==0){ flag = true; break; } } if(!flag){ array[index++] = num; } } int[] newArray = new int[index]; for(int i=0;i<newArray.length;i++){ newArray[i] = array[i]; } array = null; for(int v:newArray){ System.out.println(v); } } }
10.冒泡、直接选择排序
/*冒泡排序的基本思想 冒泡排序的基本思想是对比相邻的元素值,如果满足条件就交换元素值,把较小的元素移动 到数组前面,把数值大的元素移动到数组后面,这样较小的元素就像气泡一样从底部升到顶部 */ public class MaoPaoSort { public void sort(int[] arrayA,boolean flag){//true为升序,false为降序 System.out.println("排序前:"); for (int result:arrayA){ System.out.print(result+"\t"); } System.out.println(); for(int i=1;i<arrayA.length;i++){//i控制第几趟排序 for (int j=0;j<arrayA.length-i;j++){//j控制每趟比较的次数 if(flag){ if(arrayA[j]>arrayA[j+1]){ int temp = arrayA[j]; arrayA[j] = arrayA[j+1]; arrayA[j+1] =temp; } }else { if(arrayA[j]<arrayA[j+1]){ int temp = arrayA[j]; arrayA[j] = arrayA[j+1]; arrayA[j+1] =temp; } } } } System.out.println("排序后:"); for (int result:arrayA){ System.out.print(result+"\t"); } } }
package order2_xuanze; /** 直接选择排序的基本思想 将指定排序位置与其他数组元素分别对比,如果满足条件就交换元素。 注意这里与冒泡排序的区别:不是交换相邻的元素,而是把满足条件的元素与指定 的排序位置交换。 */ public class StraightSelectSorting { public void straightSelectSorting(){ int [] array = {100,95,158,20,32,19,1,0,79}; //从小到大 从前往后 for (int i = 0; i < array.length; i++) {//控制数值存放的位置 //每一次里面需要从当前i位置之后找 找到最小值 int index = i; //用来记录最小值的索引位置 for(int j=i+1; j<array.length; j++){ if(array[j]<array[index]){ index = j; } } int temp = array[index]; array[index] = array[i]; array[i] =temp; } for (int i = 0; i < array.length; i++) { System.out.println(array[i]); } } public static void main(String[] args) { StraightSelectSorting sort = new StraightSelectSorting(); sort.straightSelectSorting(); } }
思路如下:
11.实现用户登录
import java.util.Scanner; public class Array { public static void main(String[] args){ String [] userBox ={"星期一","星期二","星期三"}; int [] passwordBox = {123, 234, 345}; Scanner input = new Scanner(System.in); System.out.println("请输入用户名:"); String user = input.nextLine(); System.out.println("请输入密码:"); int password = input.nextInt(); boolean flag = false; for(int i = 0; i < userBox.length; i++){ if(userBox[i].equals(user)){ if(passwordBox[i] == password){ System.out.println("登录成功"); flag = true; } break; } } if(!flag){ System.out.println("账号或密码错误"); } } }