
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) 展开
/**
* @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) 展开
2个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询