Java SE作业代码(一维数组(上))

1. 删除重复值
阿伟学长在开发一款游戏, 他希望玩家已经获得的道具会降低爆率, 避免玩家获得太多重复的道具
但玩家背包中道具是乱序且不确定的, 为了减小判断的运算量, 需要先对数据进行去重.
设计一个程序, 输入数据数量N, 以及N个整数Ni. 将该组数据去重后打印
(1<N<100, 0 <= Ni <= MAX_INT)
=====================================
样例输入:
10
1 3 2 6 2 6 4 8 2 6
样例输出:
1 3 2 6 4 8

整体代码实现:

import java.util.Scanner;

public class H1 {
    public static void main(String[] args) {
        //设计一个程序, 输入数据数量N, 以及N个整数Ni. 将该组数据去重后打印
        //(1<N<100, 0 <= Ni <= MAX_INT)
        //样例输入:
        //10
        //1 3 2 6 2 6 4 8 2 6
        //样例输出:
        //1 3 2 6 4 8
        //思路:
        //1.N,Ni[]
        //2.遍历输入的数据,判断是否重复,重复的话,不添加到数组
        //3.输出数组
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        int Ni[] = new int[N];
        boolean flag = false;//开关判断是否重复
        int count = 0;//接收数组的下标
        int temp = 0;//接收输入的数据
        for(int j = 1;j <= N;j++){
            temp = scanner.nextInt();
            for (int i = 0; i < Ni.length; i++) {
                if(temp == Ni[i]){
                    flag = true;
                }
            }
            if(flag == false){//不重复,添加到数组中
                Ni[count] = temp;
                count++;
            }
            flag = false;
        }
        //遍历数组
        for (int i = 0; i <Ni.length ; i++) {
            if(Ni[i] == 0){
                break;
            }
            System.out.print(Ni[i] + " ");
        }
    }
}
2. 数字环
有一个长度为n的数字环, 将每个数字往后移动m, 使其成为一个新的数字环
输入:
第一行: 整数n 表示有n个数字
第二行: n个整数Ni, 表示数字环的每个元素
第三行: 整数m 表示每个元素需要往后移动m
输出: 移动后的新数字环
(1<=m<n<100, MIN_INT<Ni<MAX_INT)
=====================================
样例输入:
10
1 2 3 4 5 6 7 8 9 10
2
样例输出:
9 10 1 2 3 4 5 6 7 8

 整体代码实现:

import java.util.Scanner;

public class H2 {
    public static void main(String[] args) {
        //2. 数字环
        //有一个长度为n的数字环, 将每个数字往后移动m位, 使其成为一个新的数字环
        //输入:
        //第一行: 整数n 表示有n个数字
        //第二行: n个整数Ni, 表示数字环的每个元素
        //第三行: 整数m 表示每个元素需要往后移动m位
        //输出: 移动后的新数字环
        //(1<=m<n<100, MIN_INT<Ni<MAX_INT)
        //样例输入:
        //10
        //1 2 3 4 5 6 7 8 9 10
        //2
        //样例输出:
        //9 10 1 2 3 4 5 6 7 8
        //思路:
        //1.N,Ni[N]接收数据,整数m,新数组Bn[N]
        //2.遍历Ni[N],判断i + m是否大于N-1,如果大于则新的下标为[i+m-N],否则新的下标为[i+m]
        //3.存入Bn中,遍历输出
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        int Ni[] = new int[N];
        int Bn[] = new int[N];
        for (int i = 0; i < Ni.length; i++) {
            Ni[i] = scanner.nextInt();
        }
        int m = scanner.nextInt();
        for (int i = 0; i < Ni.length; i++) {
            if((i + m) > (N - 1)){
                Bn[i + m - N] = Ni[i];
            }else{
                Bn[i + m] = Ni[i];
            }
        }
        for (int i = 0; i < Bn.length; i++) {
            System.out.print(Bn[i] + " ");
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值