A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Akm 黑马帝   /  2013-5-29 19:37  /  1585 人查看  /  6 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Akm 于 2013-5-29 19:40 编辑

现在要求定义一个数组类(Array),里面定义了一个整型数组,但是此整型数组属于动态分配大小,即:所有的大小由程序指定,并在此基础上实现以下的两个子类:
                • 反转类:可以将数组的内容反转排列
                • 排序类:可以对数组进行排序的操作
        问:这样的类该如何实现?
        本程序肯定是通过继承实现,每一个都应该是一个具体的操作类。
         


本程序中包含了以下的知识点:
1、继承的基本概念:扩充了类的功能
2、方法的覆写的作用
3、引用传递
4、数组的排序、foreach输出

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

6 个回复

倒序浏览
隐藏内容是什么意思?你自己的答案??
回复 使用道具 举报
{:soso_e126:}
回复 使用道具 举报
  1. import java.util.ArrayList;
  2. import java.util.Arrays;
  3. import java.util.Collections;
  4. import java.util.Comparator;
  5. import java.util.List;

  6. public class MyDemo {

  7.         public static void main(String []args){
  8.        
  9.                 ReverseArray al = new ReverseArray();
  10.                 SortArray sa = new SortArray();

  11.                 al.add(1);
  12.                 al.add(15);
  13.                 al.add(7);
  14.                 al.add(19);
  15.                 al.add(5);
  16.                 al.add(29);
  17.                 al.add(9);
  18. /*
  19.                                 al.add(7);
  20.                 al.add(19);
  21.                 al.add(5);
  22.                 al.add(29);
  23.                 al.add(9);
  24.                 sa.add(7);
  25.                 sa.add(19);
  26.                 sa.add(5);
  27.                 sa.add(29);
  28.                 sa.add(9);   */
  29.                
  30.                 sa.add(1);
  31.                 sa.add(15);
  32.                 sa.add(7);
  33.                 sa.add(19);
  34.                 sa.add(5);
  35.                 sa.add(29);
  36.                 sa.add(9);


  37.                 System.out.println(al.toString());
  38.                 //System.out.println(al);
  39.                 al.reverse();
  40.                 System.out.println(al.toString());
  41.                
  42.                 System.out.println(sa.toString());
  43.                 sa.sort();
  44.                 System.out.println(sa.toString());

  45.         }
  46. }


  47. class Array {
  48.         private int [] array = new int[10];
  49.         private int size =0;
  50.        
  51.         public int getSize() {
  52.                 return size;
  53.         }
  54.         public void setSize(int size) {
  55.                 this.size = size;
  56.         }
  57.          
  58.         public int get(int index){
  59.                 return array[index];
  60.         }
  61.        
  62.         public int set(int index, int element){
  63.                 array[index] = element;
  64.                 return get(index);
  65.         }
  66.        
  67.         public boolean add(int i){
  68.                 size++;
  69.                 System.out.println(size);
  70.                 if(size>10)
  71.                         array = copyArray(array);

  72.                 array[size-1] = i;
  73.                 return true;
  74.         }
  75.        
  76.         private int[] copyArray(int[] array){
  77.                        
  78.                 int []array1 = new int[array.length+1];
  79.                
  80.                 for(int i = 0; i<array.length;i++){
  81.                         array1[i] = array[i];
  82.                 }
  83.                 return array1;
  84.         }
  85.        
  86.         public boolean remove(int index){
  87.                 if(index>=size)
  88.                         return false;
  89.                 else{
  90.                         int[] array1 = new int[size - 1];
  91.                         for(int i = 0, count = 0; i<size;i++){
  92.                                 if(i == index)
  93.                                         continue;
  94.                                 array1[count++] = array[i];                               
  95.                         }
  96.                         array = array1;
  97.                         size--;
  98.                         return true;
  99.                 }
  100.         }
  101.        
  102.         @Override
  103.         public String toString() {
  104.                 // TODO Auto-generated method stub
  105.                 Integer [] intList = new Integer[size];
  106.                
  107.                 for(int i = 0;i<size;i++){//注意角标越界。
  108.                         intList[i] = get(i);
  109.                 }
  110.                 List list = Arrays.asList(intList);
  111.                 return list.toString();
  112.         }       
  113. }

  114. class ReverseArray extends Array{
  115.        
  116.         public void reverse(){
  117.                 int size = getSize();
  118.                 int half = size>>1;
  119.                
  120.                 for(int i =0,x=0; i< half;i++){
  121.                         x = get(i);
  122.                         set(i, get(size-1-i));
  123.                         set(size-1-i,x);
  124.                 }
  125.         }

  126.        
  127.         public void sort(){
  128.                 int size = getSize();

  129.                 for(int z=0,x=0;z<size-1;z++){
  130.                         for(int y=z+1; y<size;y++){//y=z+1; 而不是1;
  131.                                 if(get(z)>get(y)){
  132.                                         x = get(z);
  133.                                         set(z, get(y));
  134.                                         set(y,x);
  135.                                 }
  136.                         }
  137.                 }
  138.         }
  139.        
  140. }

  141. class SortArray extends Array{
  142.         public void sort(){
  143.                 int size = getSize();

  144.                 for(int z=0,x=0;z<size-1;z++){
  145.                         for(int y=z+1; y<size;y++){
  146.                                 if(get(z)>get(y)){
  147.                                         x = get(z);
  148.                                         set(z, get(y));
  149.                                         set(y,x);
  150.                                 }
  151.                         }
  152.                 }
  153.         }
  154. }
复制代码
看看我的答案能否满足你的要求,请指教

评分

参与人数 1技术分 +2 收起 理由
袁梦希 + 2 很给力!

查看全部评分

回复 使用道具 举报
{:soso_e103:}
回复 使用道具 举报
我去,这个也能给分
回复 使用道具 举报
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马