import java.util.Scanner;
public class Main {
public static void main(String[] args)
{
int m,n,j,i;
Scanner reader=new Scanner(System.in);
m=reader.nextInt();
for(i=0;i<m;i++)
{
double mind=0,an;
n=reader.nextInt();
double[] x=new double[n];
double[] y=new double[n];
double[] high=new double[n];
for(i=0;i<n;i++)
{
x[i]=reader.nextDouble();
}
for(j=0;j<n;j++)
{
y[j]=reader.nextDouble();
}
for(i=0;i<n;i++)
for(j=1;j<n-i;j++)
{
if(x[j-1]>x[j])
{
mind=x[j-1];
x[j-1]=x[j];
x[j]=mind;
}
}
for(i=0;i<n;i++)
for(j=1;j<n-i;j++)
{
if(y[j-1]>y[j])
{
mind=y[j-1];
y[j-1]=y[j];
y[j]=mind;
}
}
high[0]=x[1]-x[0];
high[n-1]=x[n-1]-x[n-2];
for(i=1;i<n-1;++i)
{
high[i]=x[i+1]-x[i-1];
}
for(i=0;i<n;i++)
for(j=1;j<n-i;j++)
{
if(high[j-1]>high[j])
{
mind=high[j-1];
high[j-1]=high[j];
high[j]=mind;
}
}
an=0.0;
for(i=0;i<n;i++)
{
an+=high[i]*y[i];
}
System.out.println(an/2.0);
}
}}
这个程序为什么只运行一次呢?
比如输入
4
4
1 2 3 4 4 3 2 1
的到8.5
就不能继续输入了,什么意思,求解答,还有我是小白啦,怎么是输出结果保留两位比如8.5.0,谢谢了

解决方案 »

  1.   

    1    不能循环是变量使用问题,循环一次后,i=4,i<m条件不成立了,所以不再循环了。
      可以改一下循环变量:
            //for(i=0;i<m;i++)
            for(int k=0;k<m;k++)//不使用变量i
    2     把输出格式改一下:
                //System.out.println(an/2.0); 
                System.out.printf("%.2f",an/2.0);