黑马程序员技术交流社区

标题: 集合数组转换及排序程序调试问题 [打印本页]

作者: 马金池    时间: 2013-1-24 01:23
标题: 集合数组转换及排序程序调试问题
  1. import java.util.*;

  2. public class Test9 {

  3.                 public static void main(String[] args) {
  4.                 ArrayList<Integer> arr=new ArrayList<Integer>();
  5.         arr.add(1);
  6.         arr.add(2);
  7.         arr.add(3);
  8.         arr.add(14);
  9.         arr.add(6);
  10.         arr.add(45);
  11.         arr.add(35);
  12.         arr.add(46);
  13.         InfoDemo.small2Big(arr);
  14.         InfoDemo.big2Small(arr);
  15.         }

  16. }
  17. class InfoDemo
  18. {
  19.         public static Integer[] toArr(ArrayList arr)
  20.         {
  21.                 Integer[] a=new Integer[arr.size()];
  22.                 Iterator it=arr.iterator();
  23.                 for(int x=0;x<arr.size()-1;x++)
  24.                 {
  25.                         a[x]=(Integer) it.next();
  26.                 }
  27.                 return a;
  28.         }
  29.         public static void small2Big(ArrayList arr)
  30.         {
  31.                 Integer[] a=toArr(arr);
  32.                 for(int x=0;x<a.length-1;x++)
  33.                         for(int y=x+1;x<a.length;y++)
  34.                         {
  35.                                 if(a[x]>a[y])
  36.                                         swap(a,x,y);
  37.                         }
  38.                 sop(a);
  39.                
  40.         }
  41.         private static void swap(Integer[] a,int x, int y) {
  42.                 // TODO Auto-generated method stub
  43.                 Integer temp=a[x];
  44.                 a[x]=a[y];
  45.                 a[y]=temp;
  46.         }
  47.         public static void big2Small(ArrayList arr)
  48.         {
  49.                 Integer[] a=toArr(arr);
  50.                 for(int x=0;x<a.length-1;x++)
  51.                         for(int y=0;x<a.length-1-x;y++)
  52.                         {
  53.                                 if(a[y+1]>a[y])
  54.                                         swap(a,x,y);
  55.                         }
  56.                
  57.                 sop(a);
  58.         }
  59.         public static void sop(Integer[] a)
  60.         {
  61.                 for(int x=0;x<a.length;x++)
  62.                         System.out.println(a[x]);
  63.         }
  64. }
复制代码
这个程序运行在我这报这个错误Exception in thread "main" java.lang.NullPointerException
        at com.itheima.InfoDemo.small2Big(Test9.java:47)
        at com.itheima.Test9.main(Test9.java:24)
哪里出问题了
作者: 郭嘉    时间: 2013-1-24 02:19
  1. import java.util.*;

  2. public class CollectionsDemo {

  3.                 public static void main(String[] args) {
  4.                 ArrayList<Integer> arr=new ArrayList<Integer>();
  5.         arr.add(1);
  6.         arr.add(2);
  7.         arr.add(3);
  8.         arr.add(14);
  9.         arr.add(6);
  10.         arr.add(45);
  11.         arr.add(35);
  12.         arr.add(46);
  13.         InfoDemo.small2Big(arr);
  14.         InfoDemo.big2Small(arr);
  15.         }

  16. }
  17. class InfoDemo
  18. {
  19.         public static Integer[] toArr(ArrayList arr)
  20.         {
  21.                 Integer[] a=new Integer[arr.size()];
  22.                 Iterator it=arr.iterator();
  23.                 for(int x=0;x<arr.size();x++)              //这里应该是arr.size()
  24.                 {
  25.                         a[x]=(Integer) it.next();
  26.                 }
  27.                 return a;
  28.         }
  29.         public static void small2Big(ArrayList arr)
  30.         {
  31.                 Integer[] a=toArr(arr);
  32.                 for(int x=0;x<a.length-1;x++)
  33.                         for(int y=x+1;y<a.length;y++)               //改成y<a.length
  34.                         {
  35.                                 if(a[x]>a[y])
  36.                                         swap(a,x,y);
  37.                         }
  38.                 sop(a);
  39.                
  40.         }
  41.         private static void swap(Integer[] a,int x, int y) {
  42.                 // TODO Auto-generated method stub
  43.                 Integer temp=a[x];
  44.                 a[x]=a[y];
  45.                 a[y]=temp;
  46.         }
  47.         public static void big2Small(ArrayList arr)
  48.         {
  49.                 Integer[] a=toArr(arr);
  50.                 for(int x=0;x<a.length-1;x++)
  51.                         for(int y=0;y<a.length-1-x;y++)    //改成y<a.length-1-x
  52.                         {
  53.                                 if(a[y+1]>a[y])
  54.                                         swap(a,y+1,y);     //改成y+1
  55.                         }
  56.                
  57.                 sop(a);
  58.         }
  59.         public static void sop(Integer[] a)
  60.         {
  61.                 for(int x=0;x<a.length;x++)
  62.                         System.out.println(a[x]);
  63.         }
  64. }
复制代码
已经修改了,都是些小问题,注意一下就行了
作者: jonn    时间: 2013-1-24 02:42
  1. <blockquote><span class="Apple-tab-span" style="white-space:pre">        </span>import java.util.*;
复制代码
没事也改改.....

作者: jonn    时间: 2013-1-24 02:42
  1. import java.util.*;
  2.         import static java.lang.System.*;
  3.         public class Test9 {

  4.                                         public static void main(String[] args) {
  5.                                         ArrayList<Integer> arr=new ArrayList<Integer>();
  6.                                         arr.add(1);
  7.                                         arr.add(2);
  8.                                         arr.add(3);
  9.                                         arr.add(14);
  10.                                         arr.add(6);
  11.                                         arr.add(45);
  12.                                         arr.add(35);
  13.                                         arr.add(46);
  14.                                         InfoDemo.small2Big(arr);
  15.                                         InfoDemo.big2Small(arr);
  16.                         }

  17.         }
  18.         class InfoDemo
  19.         {
  20.                         public static Integer[] toArr(ArrayList<?> arr)
  21.                         {
  22.                                         Integer[] a=new Integer[arr.size()];
  23.                                         Iterator<?> it=arr.iterator();
  24.                                            while(it.hasNext()){
  25.                                            Integer temp=(Integer)it.next();
  26.                                            int index=arr.indexOf(temp);
  27.                                            a[index]=temp;
  28.                                         }
  29.                                         return a;
  30.                         }
  31.                         public static void small2Big(ArrayList<?> arr)
  32.                         {
  33.                                         Integer[] a=toArr(arr);
  34.                                         for(int x=0;x<a.length-1;x++){
  35.                                                     int lower=x;
  36.                                                         for(int y=x+1;y<a.length;y++)
  37.                                                         {
  38.                                                                         if(a[lower]>a[y])
  39.                                                                          lower=y;
  40.                                                                          swap(a,x,lower);
  41.                                                         }
  42.                                         }
  43.                                         sop(a);
  44.                                        
  45.                         }
  46.                         private static void swap(Integer[] a,int x, int y) {
  47.                                         Integer temp=a[x];
  48.                                         a[x]=a[y];
  49.                                         a[y]=temp;
  50.                         }
  51.                         public static void big2Small(ArrayList<?> arr)
  52.                         {
  53.                                         Integer[] a=toArr(arr);
  54.                                         for(int x=0;x<a.length-1;x++)
  55.                                                         for(int y=0;y<a.length-1-x;y++)
  56.                                                         {
  57.                                                                         if(a[y+1]>a[y])
  58.                                                                                         swap(a,y+1,y);
  59.                                                         }
  60.                                        
  61.                                         sop(a);
  62.                         }
  63.                         public static void sop(Integer[] a)
  64.                         {
  65.                                         StringBuilder str=new StringBuilder();
  66.                                         for(Integer temp : a){
  67.                                                 str.append(temp+",");
  68.                                         }
  69.                                         out.println(str.toString());
  70.                         }
  71.         }
复制代码

作者: 马金池    时间: 2013-1-24 13:03
郭嘉 发表于 2013-1-24 02:19
已经修改了,都是些小问题,注意一下就行了

亲那个是手误哦,不是那个错误,那个地方改了,但是不行的
作者: 马金池    时间: 2013-1-24 13:04
赵文 发表于 2013-1-24 02:42

亲,你的可以,正解
作者: 马金池    时间: 2013-1-24 13:04
赵文 发表于 2013-1-24 02:42
没事也改改.....

这是啥,看不懂
作者: jonn    时间: 2013-1-24 13:07
马金池 发表于 2013-1-24 13:04
这是啥,看不懂

:lol 自己没事在坛里改改程序.....
妹纸你写的程序效率低了,我稍微优化了一下....
作者: 郭嘉    时间: 2013-1-24 16:44
马金池 发表于 2013-1-24 13:03
亲那个是手误哦,不是那个错误,那个地方改了,但是不行的

我为了编译方便,把public类名改了,你改成test9就行了




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