简单java程序员改错···

//编程实现自然合并排序算法。packagetest;publicclassSort{staticint[]b;//staticintf=0;/***@paramargs... //编程实现自然合并排序算法。
package test;

public class Sort {
static int[] b;
// static int f=0;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("输入数组的个数:");
int n=Utility.input();
System.out.println("输入数组的元素:");
int []a=new int [n];
for(int i=0;i<n;i++)
{
a[i]=Utility.input();
}
fun(a);
System.out.println("结果为:");
//if(f==1)
//for(int i=n-1;i>=0;i--)
//{
// System.out.println(a[i]+" ");}

//else
for(int i=0;i<n;i++)
{
System.out.println(a[i]+" ");
}

}
private static void fun(int[] a) {
// TODO Auto-generated method stub
int s,e,m;
int i,j;
int []c=new int [a.length+1];
initArr(a,c);
while(true)
{
// if(f==1)break;
s=0;i=0;j=0;
while (true) {
m=c[i++];
if(m==-1)
break;
e=c[i++];
if(e==-1)
{
c[j++]=m;
break;

}
merge(a,b,s,m,e);
copy(b,a,s,e);
c[j++]=e;
s=e+1;
c[j]=-1;
if(s==0)
break;
}
}
}
private static void copy(int[] b2, int[] a, int s, int e) {
// TODO Auto-generated method stub
for(int i=s;i<e+1;i++)
{
a[i]=b[i];
}
}
private static void merge(int[] a, int[] b2, int s, int m, int e) {
// TODO Auto-generated method stub
int i=s;
int j=e+1;
int k=s;
while ((i<=m)&&(j<=e)) {
if(a[i]<a[j])
{b[k++]=a[i++];}
else b[k++]=a[j++];
}
if(i>m)
{ while(j<=e)
{b[k++]=a[j++];}
}
else {
while (i<=m) {
b[k++]=a[i++];
}
}
}
public static void initArr(int[] a, int[] c) {
// TODO Auto-generated method stub
int i,j=0;
for(i=0;i<a.length-1;i++)
{
if(a[i]>a[i+1])
c[j++]=i;
}
c[j++]=i;
// if(j==a.length)f=1;
// else
c[j]=-1;
}

}
==========================
输入数组的个数:
4
输入数组的元素:
4
5
6

3
Exception in thread "main" java.lang.NullPointerException
at test.Sort.merge(Sort.java:87)
at test.Sort.fun(Sort.java:54)
at test.Sort.main(Sort.java:19)
展开
 我来答
轩齐太子
2012-03-19 · 超过34用户采纳过TA的回答
知道答主
回答量:150
采纳率:0%
帮助的人:99.2万
展开全部
空指针错误、你定位到你代码报错的第一条,是87行吧? 这个错误每个刚学习JAVA的人都会经常犯的, 报这个错误是因为你申明了一个变量,但是没给它赋值,而你却使用了它……个人感觉是你传入的数组为空
幽冥神者
2012-03-19 · TA获得超过3213个赞
知道大有可为答主
回答量:1953
采纳率:50%
帮助的人:1789万
展开全部
merge方法里唯一有可能空指针异常的就是数组了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuhui3166
2012-03-19 · TA获得超过153个赞
知道答主
回答量:149
采纳率:0%
帮助的人:91.5万
展开全部
merge(a,b,s,m,e);调用这个方法的时候怎么没看到你定义b数组?这个b应该是c吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
明940
2012-03-20
知道答主
回答量:19
采纳率:0%
帮助的人:7.9万
展开全部
java中本来就有sort这个方法吧 就是在util.arrays 您真想写的话可以参考一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式