【Java】基础练习(六)

1.一个班级有若干学生,每个学生的成绩以整数表示。请实现一个程序,根据学生的成绩对他们进行排名并输出。

输出格式:
排名  成绩
 1    xxx
 2    xxx
 3    xxx
package swp.kaifamiao.codes.Java.d0808;

import java.util.Arrays;

/**
 * {class description}
 *
 * @author SWP
 * @version 1.0.0
 */
public class Text01 {
    public static void main(String[] args) {
        //定义一个score成绩的整数数组
        int[] score = {89, 98, 87, 88, 79, 93};
        //外循环
        for (int j = 0; j < score.length-1; j++){
            //内循环,遍历数组中每一个数,使用冒泡法让其两两进行比较
            for (int i = 0; i < score.length-1; i++){
                if (score[i+1] > score[i]){
                    int temp = score[i];
                    score[i] = score[i+1];
                    score[i+1] = temp;
                }
            }
        }
        System.out.println("排名\t成绩");
        for (int i = 0; i < score.length; i++) {
            System.out.println((i+1) + "\t" + score[i]);
        }
    }
}

在这里插入图片描述

2.给定一个整数数组,输入一个值 n ,输出 n 在数组中的下标(如果不存在输出 -1 )

例如:
int[] arr = {3, 2, 1, 4, 5};
1. 输入: 3
   输出: 0
2. 输入: 6
   输出: -1
package swp.kaifamiao.codes.Java.d0808;
import java.util.Scanner;
/**
* {class description}
*
* @author SWP
* @version 1.0.0
*/
public class Text02 {
   public static void main(String[] args) {
       //定义一个整数数组
       int[] arr = {3, 2, 1, 4, 5};
       //创建一个Scanner对象,让用户在控制台输入一个n
       Scanner in = new Scanner(System.in);
       System.out.println("请输入n的值:");
       int n = in.nextInt();
       boolean fond = false;
       //遍历数组中的每一个数
       for (int i = 0; i < arr.length; i++){
           if (arr[i] == n){
               fond = true;
               System.out.println("n在数组中的下标为:" + i);
               break;
           }
       }
       if (!fond){
           System.out.println("n在数组中的下标为:-1 ");
       }
   }
}

在这里插入图片描述

在这里插入图片描述

3.给定一个整数数组,编写一个程序,移除数组中的重复元素,输出一个去重后的数组。

package swp.kaifamiao.codes.Java.d0808;

import java.util.Arrays;

/**
 * {class description}
 *
 * @author SWP
 * @version 1.0.0
 */
public class Text03 {
    public static void main(String[] args) {
        //给定一个有重复项的整数数组
        int[] arr = {2, 3, 5, 3, 7, 9, 2, 4, 9, 1};
        // 插入排序
        for (int i = 1; i < arr.length; i++) {
            int index = i - 1;
            int num = arr[i];
            while (index >= 0 && arr[index] < num) {
                arr[index + 1] = arr[index];
                index--;
            }
            arr[index + 1] = num;
        }
        System.out.println("去重前的数组为:" + Arrays.toString(arr));

        int[] arr1 = new int[arr.length];
        int count = 0;

        for (int i = 0; i<arr.length;i++){
            if (i < arr.length-1 && arr[i] == arr[i+1]){
                continue;
            }else {
                arr1[count] = arr[i];
                count++;
            }
        }
        //不知道新数组的具体长度,将去重后的数组 arr1 的长度调整为实际去重后的有效长度
        arr1 = Arrays.copyOf(arr1,count);

        System.out.println("去重后的数组为:" + Arrays.toString(arr1));
    }
}

在这里插入图片描述

4.给定一个整数数组,输入一个值 n, 输出数组中第 n 大的数。

例如:
有数组:
int[] arr = {2, 3, 1, 8, 3, 9, 6};
输入 n 的值为 4,输出 3
package swp.kaifamiao.codes.Java.d0808;
import java.util.Arrays;
import java.util.Scanner;
/**
 * {class description}
 *
 * @author SWP
 * @version 1.0.0
 */
public class Text04 {
    public static void main(String[] args) {
        //定义一个整数数组
        int[] arr = {2, 3, 1, 8, 3, 9, 6};
        //创建一个Scanner对象
        Scanner in = new Scanner(System.in);
        System.out.println("请输入一个值n:");
        int n = in.nextInt();
        //外循环
        for (int j = 0; j < arr.length-1; j++){
            //内循环,遍历数组,并对数组进行由大到小的排序
            for (int i = 0; i < arr.length-1-j; i++){
                if (arr[i] < arr[i+1]){
                    int temp = arr[i+1];
                    arr[i+1] = arr[i];
                    arr[i] = temp;
                }
            }
        }
        if (n > 0 && n <= arr.length){
            System.out.println("数组中第n大的数为:" + arr[n-1]);
        }else {
            System.out.println("输入的n超过了数组范围,请重新输入!");
        }
    }
}

在这里插入图片描述

5.给定一个整数数组,输入一个值 n, 输出去掉数组中第 n 大的数后的数组。

package swp.kaifamiao.codes.Java.d0808;

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

/**
 * {class description}
 *
 * @author SWP
 * @version 1.0.0
 */
public class Text05 {
    public static void main(String[] args) {
        //定义一个整数数组
        int[] arr = {2, 3, 1, 8, 3, 9, 6};
        //创建一个Scanner对象
        Scanner in = new Scanner(System.in);
        System.out.println("请输入一个值n:");
        int n = in.nextInt();
        //外循环
        for (int j = 0; j < arr.length-1; j++){
            //内循环,遍历数组,并对数组进行由大到小的排序
            for (int i = 0; i < arr.length-1-j; i++){
                if (arr[i] < arr[i+1]){
                    int temp = arr[i+1];
                    arr[i+1] = arr[i];
                    arr[i] = temp;
                }
            }
        }
        System.out.println("排序后的源数组是:" + Arrays.toString(arr));
        //判断条件并在控制台输出第n大的数
        if (n > 0 && n <= arr.length){
            System.out.println("您输入的第n大的数为:" + arr[n-1]);
        }else {
            System.out.println("您输入的n超过了数组范围,请重新输入!");
        }
        //定义一个新的数组arr2,用来存放去除掉第n大的数;长度为为arr.length - 1,因为少了一个数,所以长度减1
        int[] arr2 = new int[arr.length - 1];
        //定义一个初始值为0
        int index = 0;
        //遍历数组,通过判断将不等于arr[n-1]的元素放入arr2数组中
        for (int i = 0;i<arr.length; i++){
            if (arr[i] != arr[n-1]){
                arr2[index] = arr[i];
                index++;
            }
        }
        System.out.println("去掉第n大的数后的数组为:" + Arrays.toString(arr2));
    }
}

在这里插入图片描述

6.给定一个整数数组,输入位置 n 和值 k。将值 k 插入到数组的第 n 位并输出新数组的每一个元素。

例如:
有数组:
输入 n 为 3 , k 为 10 ,新数组为 [2, 3, 10, 1, 8, 3, 9, 6]
package swp.kaifamiao.codes.Java.d0808;

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

/**
 * {class description}
 *
 * @author SWP
 * @version 1.0.0
 */
public class Text06 {
    public static void main(String[] args) {
        //定义一个整数数组
        int[] arr = {2, 3, 1, 8, 3, 9, 6};
        Scanner in = new Scanner(System.in);
        System.out.println("请输入要插入的数的位置n:");
        int n = in.nextInt();
        System.out.println("请输入要插入的数的值k:");
        int k = in.nextInt();

        //创建一个新的数组,长度为arr.length + 1
        int[] arr2 = new int[arr.length+1];
        //当i小于要插入的这个值的下标时,将arr[i]的数值赋值给arr2[i]  注意:位置为n,那么它的下标为 n-1
        for (int i = 0; i < n-1; i++){
            arr2[i] = arr[i];
        }
        //在arr2中,下标为n-1,就是第n位,值为k
        arr2[n-1] = k;

        //将arr[i]中剩下的值赋给arr2[],(从n-1后开始)
        for (int i = n-1; i < arr.length; i++){
            arr2[i+1] = arr[i];
        }
        System.out.println("插入数值k后新的数组为:" + Arrays.toString(arr2));
    }
}

在这里插入图片描述

7.给定两个各不包含重复元素的数组 arr 和 arr1 ,求 arr 和 arr1 的交集(在 arr 中有,arr1 中也包含的元素集合),将交集中的元素放到一个数组中并输出。

例如:
输出: [2, 3]
int[] arr = {1, 2, 3};
int[] arr1 = {2, 3};
package swp.kaifamiao.codes.Java.d0808;

import java.util.Arrays;

/**
 * {class description}
 *
 * @author SWP
 * @version 1.0.0
 */
public class Text07 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 9, 7};
        int[] arr1 = {2, 3, 7, 8};

        int[] arr2 =new int[6];
        int index = 0;
        for (int i = 0; i < arr.length; i++){
            for (int j = 0; j < arr1.length; j++){
                if (arr[i] == arr1[j]){
                    arr2[index] = arr1[j];
                    index++;
                }
            }
        }
        //因为定义arr2时不知道数组的长度是多少,那么将 arr2 数组的长度调整为 index
        arr2 = Arrays.copyOf(arr2, index);
        //输出交集的数组
        System.out.println("两个数组的交集是:" + Arrays.toString(arr2));
    }
}

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值