为了账号安全,请及时绑定邮箱和手机立即绑定

数组排序问题出现Exception in thread "main" java.lang.NullPointerException

数组排序问题出现Exception in thread "main" java.lang.NullPointerException

慕粉3942243 2016-10-18 10:19:26
程序要实现的目的就是输入n个点,然后按照他们的x 坐标进行排序。import java.util.*; import java.math.*; class Point { public float x; public float y; //构造方法 public Point(float a,float b) { x=a; y=b; }   double get_dis(Point a, Point b) { return Math.sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y)); } } // 按照x排序升序 class MyComparatorx implements Comparator<Point> { public int compare(Point o1, Point o2) { if (o1.x < o2.x) { return -1; } else if (o1.x > o2.x) { return 1; } else { return 0; } } } // 按照y排序升序 class MyComparatory implements Comparator<Point> { public int compare(Point o1, Point o2) { if (o1.y < o2.y) { return -1; } else if (o1.y > o2.y) { return 1; } else { return 0; } } } // ---------主函数---------// public class ACM1007 { public static void main(String[] args) { Point[] coordinate = new Point[100005]; Point[] coordinate_x = new Point[100005]; Point[] coordinate_y = new Point[100005]; Scanner reader = new Scanner(System.in); int i, n; while (reader.hasNextInt()) { n = reader.nextInt(); if (n == 0) break; for (i = 0; i < n; i++) {                   float point_x=reader.nextFloat();                   float point_y=reader.nextFloat();                   coordinate[i]=new Point(point_x,point_y);                   //coordinate_x[i]=coordinate[i]; } MyComparatorx cmp_x=new MyComparatorx(); Arrays.sort(coordinate, cmp_x); for(int j=0;j<n;j++){ System.out.println(coordinate[i].x); } } } }
查看完整描述

4 回答

已采纳
?
winterfelll

TA贡献1条经验 获得超1个赞

用这种静态数组的方式声明对象就很容易出现错误,你最初给这个数组分配的空间是100005这么大但你刚开始输入的n肯定是一个比较小的数然后调用Collections里的sort函数他就会按100005这么大算而你只给前n个point赋值了所以它就会报空指针异常错误,你可以把100005改成5然后你最初输入的n也必须是发现就可以排序了,建议像这种不确定长度的情况用动态数组ArrayList代替。

查看完整回答
1 反对 回复 2016-10-18
?
yangzhao

TA贡献24条经验 获得超26个赞

选中报错行之前的行,在行号前双击,打断点,debug,f6下一步,f5进去调用的方法内部,到问题出现之前那一步watch变量,所有问题都将会找到原因。
查看完整回答
反对 回复 2016-10-19
?
Tobey_滔

TA贡献242条经验 获得超128个赞

NullPointerException明显的空指针异常...找到相应的位置..认真检查就好了


查看完整回答
反对 回复 2016-10-18
?
ziom

TA贡献948条经验 获得超1109个赞

空指针还不好解决吗,找到报错行,然后看哪个对象没创建就使用了

查看完整回答
反对 回复 2016-10-18
  • 慕粉3942243
    慕粉3942243
    程序里面,我自己感觉都是创建了在使用的,没有我问题。
  • ziom
    ziom
    报错信息贴出来看看
  • 4 回答
  • 1 关注
  • 1979 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信