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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HM汪磊 高级黑马   /  2013-3-17 21:35  /  1304 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

以下程序功能是实现对集合中元素排序,为什么编译老有问题呢·???有问题语句已经标出???
import java.util.*;
class  Test9
{
        public static void main(String[] args)
        {
                ArrayList<Integer> al = new ArrayList<Integer>();
                al.add(5);
                al.add(4);
                al.add(6);
                al.add(8);
                al.add(10);
                al.add(1);

                System.out.print("原数组为:");
                Iterator<Integer> it2 = al.iterator();
                while(it2.hasNext())
                {
                     System.out.print(it2.next()+" ");
                }

                System.out.println();//换行作用

                System.out.print("按从小到大排序后数组为:");
        ArrayList a3=Setarray.minToMax(al);
                Iterator<Integer> it = a3.iterator();
                while(it.hasNext())
                {
                     System.out.print(it.next()+" ");
                }
                System.out.println();//换行作用

                System.out.print("按从大到小排序后数组为:");
                ArrayList a4=Setarray.maxToMin(al);
                Iterator<Integer> it1 = a4.iterator();
                while(it1.hasNext())
                {
                     System.out.print(it1.next()+" ");
                }
               
        }
}



class Setarray
{
        //定义方法,作用:使集合中元素从小到大排序
        public static ArrayList minToMax(ArrayList tt)
        {
                //定义一个临时容器。
                ArrayList newAl = new ArrayList();
                Integer[] arr = tt.toArray(new Integer[tt.size()]);//将集合中元素转换为数组中元素 这句话提醒类型不匹配,为什么呢????????
                int k;
                //对数组中元素按从小到大排序
                for(int x=0;x<arr.length;x++)
                {
                      for(int y=x+1;y<arr.length;y++)
                                {
                                        if(arr[y]<arr[x])
                                        {
                                            k=arr[y];
                                                arr[y]=arr[x];
                                                arr[x]=k;
                                        }
                                }
                }
                //将排序后元素按顺序存储在临时集合中
                for(int x=0;x<arr.length;x++)
                {
                        newAl.add(arr[x]);
                }
                return newAl;//返回临时集合
        }
        //定义方法,作用:使集合中元素从大到小排序
        public static ArrayList maxToMin(ArrayList tt)
        {
                //定义一个临时容器。
                ArrayList newAl = new ArrayList();
                Integer[] arr = tt.toArray(new Integer[tt.size()]);//将集合中元素转换为数组中元素import java.util.*;import java.util.*;
class  Test9
{
        public static void main(String[] args)
        {
                ArrayList<Integer> al = new ArrayList<Integer>();
                al.add(5);
                al.add(4);
                al.add(6);
                al.add(8);
                al.add(10);
                al.add(1);

                System.out.print("原数组为:");
                Iterator<Integer> it2 = al.iterator();
                while(it2.hasNext())
                {
                     System.out.print(it2.next()+" ");
                }

                System.out.println();//换行作用

                System.out.print("按从小到大排序后数组为:");
        ArrayList a3=Setarray.minToMax(al);
                Iterator<Integer> it = a3.iterator();
                while(it.hasNext())
                {
                     System.out.print(it.next()+" ");
                }
                System.out.println();//换行作用

                System.out.print("按从大到小排序后数组为:");
                ArrayList a4=Setarray.maxToMin(al);
                Iterator<Integer> it1 = a4.iterator();
                while(it1.hasNext())
                {
                     System.out.print(it1.next()+" ");
                }
               
        }
}



class Setarray
{
        //定义方法,作用:使集合中元素从小到大排序
        public static ArrayList minToMax(ArrayList tt)
        {
                //定义一个临时容器。
                ArrayList newAl = new ArrayList();
                Integer[] arr = tt.toArray(new Integer[tt.size()]);//将集合中元素转换为数组中元素
                int k;
                //对数组中元素按从小到大排序
                for(int x=0;x<arr.length;x++)
                {
                      for(int y=x+1;y<arr.length;y++)
                                {
                                        if(arr[y]<arr[x])
                                        {
                                            k=arr[y];
                                                arr[y]=arr[x];
                                                arr[x]=k;
                                        }
                                }
                }
                //将排序后元素按顺序存储在临时集合中
                for(int x=0;x<arr.length;x++)
                {
                        newAl.add(arr[x]);
                }
                return newAl;//返回临时集合
        }
        //定义方法,作用:使集合中元素从大到小排序
        public static ArrayList maxToMin(ArrayList tt)
        {
                //定义一个临时容器。
                ArrayList newAl = new ArrayList();
                Integer[] arr = tt.toArray(new Integer[tt.size()]);//将集合中元素转换为数组中元素
                int k;
                //对数组中元素按从大到小排序
                for(int x=0;x<arr.length;x++)
                {
                      for(int y=x+1;y<arr.length;y++)
                                {
                                        if(arr[y]>arr[x])
                                        {
                                            k=arr[y];
                                                arr[y]=arr[x];
                                                arr[x]=k;
                                        }
                                }
                }
                //将排序后元素按顺序存储在临时集合中
                for(int x=0;x<arr.length;x++)
                {
                        newAl.add(arr[x]);
                }
                return newAl;//返回临时集合
        }
}
class  Test9
{
        public static void main(String[] args)
        {
                ArrayList<Integer> al = new ArrayList<Integer>();
                al.add(5);
                al.add(4);
                al.add(6);
                al.add(8);
                al.add(10);
                al.add(1);

                System.out.print("原数组为:");
                Iterator<Integer> it2 = al.iterator();
                while(it2.hasNext())
                {
                     System.out.print(it2.next()+" ");
                }

                System.out.println();//换行作用

                System.out.print("按从小到大排序后数组为:");
        ArrayList a3=Setarray.minToMax(al);
                Iterator<Integer> it = a3.iterator();
                while(it.hasNext())
                {
                     System.out.print(it.next()+" ");
                }
                System.out.println();//换行作用

                System.out.print("按从大到小排序后数组为:");
                ArrayList a4=Setarray.maxToMin(al);
                Iterator<Integer> it1 = a4.iterator();
                while(it1.hasNext())
                {
                     System.out.print(it1.next()+" ");
                }
               
        }
}



class Setarray
{
        //定义方法,作用:使集合中元素从小到大排序
        public static ArrayList minToMax(ArrayList tt)
        {
                //定义一个临时容器。
                ArrayList newAl = new ArrayList();
                Integer[] arr = tt.toArray(new Integer[tt.size()]);//将集合中元素转换为数组中元素。这句话提醒类型不匹配,为什么呢????????
                int k;
                //对数组中元素按从小到大排序
                for(int x=0;x<arr.length;x++)
                {
                      for(int y=x+1;y<arr.length;y++)
                                {
                                        if(arr[y]<arr[x])
                                        {
                                            k=arr[y];
                                                arr[y]=arr[x];
                                                arr[x]=k;
                                        }
                                }
                }
                //将排序后元素按顺序存储在临时集合中
                for(int x=0;x<arr.length;x++)
                {
                        newAl.add(arr[x]);
                }
                return newAl;//返回临时集合
        }
        //定义方法,作用:使集合中元素从大到小排序
        public static ArrayList maxToMin(ArrayList tt)
        {
                //定义一个临时容器。
                ArrayList newAl = new ArrayList();
                Integer[] arr = tt.toArray(new Integer[tt.size()]);//将集合中元素转换为数组中元素
                int k;
                //对数组中元素按从大到小排序
                for(int x=0;x<arr.length;x++)
                {
                      for(int y=x+1;y<arr.length;y++)
                                {
                                        if(arr[y]>arr[x])
                                        {
                                            k=arr[y];
                                                arr[y]=arr[x];
                                                arr[x]=k;
                                        }
                                }
                }
                //将排序后元素按顺序存储在临时集合中
                for(int x=0;x<arr.length;x++)
                {
                        newAl.add(arr[x]);
                }
                return newAl;//返回临时集合
        }
}
                int k;
                //对数组中元素按从大到小排序
                for(int x=0;x<arr.length;x++)
                {
                      for(int y=x+1;y<arr.length;y++)
                                {
                                        if(arr[y]>arr[x])
                                        {
                                            k=arr[y];
                                                arr[y]=arr[x];
                                                arr[x]=k;
                                        }
                                }
                }
                //将排序后元素按顺序存储在临时集合中
                for(int x=0;x<arr.length;x++)
                {
                        newAl.add(arr[x]);
                }
                return newAl;//返回临时集合
        }
}

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

3 个回复

倒序浏览
Integer[] arr = tt.toArray(new Integer[tt.size()]);
这句话最好这么写:
Integer[] arr =tt.toArray();
还有你方法参数上要加泛型
ArrayList<Integer> tt

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 陈腾跃_2013 于 2013-3-17 22:36 编辑

楼主你好,代码重复了~
有点乱啊。

同时:将minToMax方法中的赋值加上Integer[]也可以正常运行

Integer[] arr = (Integer[]) tt.toArray(new Integer[tt.size()]);

已经运行测试过,不知道这样是否妥当,欢迎指正。

按上面仁兄的建议改进的例子:
  1. ………………
  2. public static ArrayList<Integer> minToMax(ArrayList<Integer> tt) {
  3.                 // 定义一个临时容器。
  4.                 ArrayList<Integer> newAl = new ArrayList<Integer>();
  5.                 Integer[] arr = (Integer[]) tt.toArray(new Integer[tt.size()]);// 将集合中元素转换为数组中元素
  6. ………………
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
陈腾跃_2013 发表于 2013-3-17 22:26
楼主你好,代码重复了~
有点乱啊。

感谢,通过啦!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马