ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java期中测试6-2 数群

2020-11-28 11:01:12  阅读:205  来源: 互联网

标签:IntegerGroup Java int contains Range 期中 数群 Enum new


请设计如下相关接口和类:
1) 接口IntegerGroup表示以某种方式定义的一组整数,称为数群,它可以为空,也可以包含一到多个整数。该接口包含唯一的函数boolean contains(int),返回某个整数参数是否在这个IntegerGroup对象里。如group1是IntegerGroup类型的一个对象,包含两个数字-5和3,那么group1.contains(-5)返回true,group1.contains(2)返回false。请定义接口IntegerGroup
2) 类Range是IntegerGroup的实现类,表示包含在最小值和最大值之间的所有连续整数(最小和最大值包含在内)。例如new Range(-3, 2)表示数群-3,-2,-1,0,1,2。请写出完整的Range类,包括必要的成员数据、构造函数、成员函数。假定最小值小于等于最大值。
3) 类Enum也是IntegerGroup的实现类,表示多个分散整数构成的数群。例如new Enum(new int[]{1,3,5,2,-1})表示构造一个包含整数1,3,5, 2,-1的Enum对象,以整数数组作为参数。请完成类Enum,包含必要的成员数据、构造函数、成员函数。
4) 类MultipleGroups表示一组IntegerGroup对象,并用一个列表来存储多个IntegerGroup对象,MultipleGroups类有函数add,用于添加IntegerGroup对象,有函数contains,该函数以一个整数作为参数,当且仅当该IntegerGroup对象中的一个或者多个IntegerGroup对象包含这个整数时返回true。例如MultipleGroups对象multiple1包含三个对象 new Range(5, 8), new Range(10, 12), new Enum(new int[]{1, 6}),那么对multiple1.contains的调用应当返回的值如下表所示,请完成类MultipleGroup,包含必要的成员数据、构造函数、成员函数。
在这里插入图片描述
Main函数已经提供,其中构造了一个MultipleGroup对象,然后读入整数n,表示构造的IntegerGroup对象的个数,接着每行表示一个IntegerGroup对象,第一个整数表示对象类型,1为Range对象,2为Enum对象。对于Range对象来说,读入最小值和最大值,对于Enum对象来说,读入包含整数的个数,然后读入各个整数并构造为一个数组传入Enum的构造函数中。最后跟着5个测试数据,调用多个MultipleGroup对象的contains方法进行测试并输出结果。

裁判测试程序样例:

/* 请在这里填写答案 */
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        MultipleGroups mg = new MultipleGroups();
        for (int i=0;i<n;i++) {
            int t = sc.nextInt();
            IntegerGroup ng = null;
            if (t==1) {//Range
                ng = new Range(sc.nextInt(), sc.nextInt());
            } else {//Enum
                int len = sc.nextInt();
                int arr[] = new int[len];
                for (int j=0;j<len;j++)
                    arr[j] = sc.nextInt();
                    ng = new Enum(arr);
            }
            mg.add(ng);
        }
        for (int i=0;i<5;i++)
           System.out.println(mg.contains(sc.nextInt()));
        }
}

输入样例:
3
1 5 8
1 10 12
2 2 1 6
2 9 6 3 4
输出样例:
false
false
true
false
false

import java.util.Scanner;

interface Integer{
 public boolean contains(int a);
}

abstract class IntegerGroup implements Integer {
 public boolean contains(int a) {
  return true;
 }
}

class Range extends IntegerGroup {
 private int[] num;
 
 public Range(int min,int max) {
  num=new int[max-min];
  int t=min;
  for(int i=0;i<max-min;i++) {
   num[i]=t;
   t++;
  }
 }
 
 public boolean contains(int a) {
  for(int i=0;i<num.length;i++)
  {
   if(num[i]==a)
    return true;
  }
  return false;
 }
}

class Enum extends IntegerGroup {
 private int[] num;
 
 public Enum(int[] a) {
  num=new int[a.length];
  System.arraycopy(a, 0, num, 0, a.length);
  }
  
 public boolean contains(int a) {
  for(int i=0;i<num.length;i++)
  {
   if(num[i]==a)
    return true;
  }
  return false;
 }
}

class MultipleGroups{
 IntegerGroup[] group=new IntegerGroup[100000];
 int n=0;
 
 public void add(IntegerGroup temp)
 {
  group[n]=temp;
  n++;
 }
 
 public boolean contains(int a) {
  for(int i=0;i<n;i++){
   if(group[i].contains(a)==true)
    return true;
  }
  return false;
 }
}

标签:IntegerGroup,Java,int,contains,Range,期中,数群,Enum,new
来源: https://blog.csdn.net/SuperheroQun/article/details/110261276

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有