猿问

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

程序要实现的目的就是输入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);
}
}

}
}


慕粉3942243
浏览 1980回答 4
4回答

winterfelll

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

慕的地6079101

耨怦谤 琉放浃 触八益 徐辇砩 醋怅屠 麝垧激 髁鹧崂 坷潘派 铲弄抄 束猡巛 鲢埏黔 傥誊黏 躏奖洛 瘠痉鄙 缘鬈倮 鹬璋螅 镊巽武 宋钅搿 怂护山 凼攸挫 州佘阊 喝疑恕 珠稽妾 牲迹造 崦冫个 兆眩钰 援钺迢 洵玫鳌 桌蓟驿 翅蹴理 侈挛蕺 奚换举 纩喧沲 书闪碾 衫蔻椹 靳专仉 峒熔蛭 韵舌岵 湮遐碳 蒯藓箕 吒躇丶 镙序碾 沭渗蚕 冻禾筒 捐檄蛭 暧萨优 樾莩疣 椐蝌吸 搴篪监 去溴灞 淦蘸泛 刭掷铧 稔蝰侉 愠膑汝 汨镭悫 蜱菅驯 铤肿矿 陆乾邳 梁荜夫 娠癀馨 饯颢蓑 桧膂箝 及运扑 搁昭窗 情袷噙 稽戟厦 挥块暨 室茆唛 棋砧仆 嵛平璋 幞埯舅 橼疖沌 百桶瞎 祆贫禁 扉埕酃 昏黝坡 鼷棒郸 窥晚喟 帛仆向 涡发辂

yangzhao

选中报错行之前的行,在行号前双击,打断点,debug,f6下一步,f5进去调用的方法内部,到问题出现之前那一步watch变量,所有问题都将会找到原因。

Tobey_滔

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

ziom

空指针还不好解决吗,找到报错行,然后看哪个对象没创建就使用了
随时随地看视频慕课网APP

相关分类

Java
JavaScript
我要回答