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("账号或密码错误");
        }
    }
}

 

posted @ 2019-06-02 19:51  亿贫如洗杨道长  阅读(65)  评论(0编辑  收藏  举报