java运行处想错误 源代码和错误如下 应该怎样改

importjava.util.Scanner;publicclassdocument{/***@paramargs*/publicstaticint[]p;privat... import java.util.Scanner;public class document {
/**
* @param args
*/
public static int[] p;

private static boolean compare(int i, int j) {
// TODO Auto-generated method stub
if(i>j)
return true;
else
return false;
}

private static void Sort(int[] p,int n) {
// TODO Auto-generated method stub
int temp;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;i++)
{
if(compare(p[i],p[j]))
{
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
}

}
}

public static double greedy(int p[],int n) {
int[] x = new int[n];
Sort(p,n);
int k = (n - 1) / 2;
x[k] = p[n - 1];
for (int i = k + 1; i < n; i++)
x[i] = p[n - 2 * (i - k)];
for (int i = k - 1; i >= 0; i--)
x[i] = p[n - 2 * (k - i) - 1];
double m = 0, t = 0;
for (int i = 0; i < n; i++) {
m += p[i];
for (int j = i + 1; j < n; j++)
t += x[i] * x[j] * (j - i);
}
t = t / m / m;
return t;
}

public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入文件的个数:");
Scanner consolen=new Scanner(System.in);
int n=consolen.nextInt();
p=new int[n];
System.out.println("请分别输入文件的使用次数:");

for(int i=0;i<n;i++)
{
Scanner consolen1= new Scanner(System.in);
p[i]=consolen1.nextInt();
}
System.out.println(greedy(p,n));
}

}
错误:
请输入文件的个数:
5
请分别输入文件的使用次数:
33
55
22
11
9
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at document.Sort(document.java:25)
at document.greedy(document.java:39)
at document.main(document.java:71)
展开
 我来答
天空丶有点蓝
2012-11-18 · 超过24用户采纳过TA的回答
知道答主
回答量:123
采纳率:0%
帮助的人:57.8万
展开全部
数据下标越界
15353703507
2012-11-18 · 贡献了超过109个回答
知道答主
回答量:109
采纳率:0%
帮助的人:47.8万
展开全部
追问
哪错了
追答
学 java的 应该多动脑。我不是不想告诉你,只是,,,。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式