黑马程序员技术交流社区

标题: 帮忙看一下程序的问题?????? [打印本页]

作者: HM汪磊    时间: 2013-3-17 21:35
标题: 帮忙看一下程序的问题??????
以下程序功能是实现对集合中元素排序,为什么编译老有问题呢·???有问题语句已经标出???
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;//返回临时集合
        }
}


作者: 张世钦    时间: 2013-3-17 22:17
Integer[] arr = tt.toArray(new Integer[tt.size()]);
这句话最好这么写:
Integer[] arr =tt.toArray();
还有你方法参数上要加泛型
ArrayList<Integer> tt
作者: 陈腾跃_2013    时间: 2013-3-17 22:26
本帖最后由 陈腾跃_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. ………………
复制代码

作者: HM汪磊    时间: 2013-3-17 22:55
陈腾跃_2013 发表于 2013-3-17 22:26
楼主你好,代码重复了~
有点乱啊。

感谢,通过啦!!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2