黑马程序员技术交流社区
标题:
帮忙看一下程序的问题??????
[打印本页]
作者:
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()]);
已经运行测试过,不知道这样是否妥当,欢迎指正。
按上面仁兄的建议改进的例子:
………………
public static ArrayList<Integer> minToMax(ArrayList<Integer> tt) {
// 定义一个临时容器。
ArrayList<Integer> newAl = new ArrayList<Integer>();
Integer[] arr = (Integer[]) tt.toArray(new Integer[tt.size()]);// 将集合中元素转换为数组中元素
………………
复制代码
作者:
HM汪磊
时间:
2013-3-17 22:55
陈腾跃_2013 发表于 2013-3-17 22:26
楼主你好,代码重复了~
有点乱啊。
感谢,通过啦!!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2