我在运行程序的时候发现了一个错误:
我的代码是:
import java.util.Scanner;
public class eee {
public static void main(String args[])
{ System.out.println("请输入最大容量,最大缺额,次数,从高到低的动作频率");
getp a=new getp();
double pmax;
double pqn;
int n;
double f;
double pn;
double f2;//恢复频率
double p3;
Scanner sc = new Scanner(System.in); //输入各数值
pmax = sc.nextDouble();
Scanner ss = new Scanner(System.in);
pqn = ss.nextDouble();
Scanner sw = new Scanner(System.in);
n = sw.nextInt();
for(int c=0;c<n;c++)
{
Scanner sa = new Scanner(System.in);
a.m[c] = sa.nextDouble();
}
pn=pqn/pmax;
f2=a.getf2(pn, n);
if(f2!=0)
{
System.out.println("恢复频率为"+f2);
p3=a.getp2(pmax,pn,n,f2);
}
}
}
class getp
{
public double[] m = new double[ 100 ];
public double getf2(double pn,int n)
{
double p3=0;//中间变量;
double p4=0;
double p=1;//按f算出的断开功率
double p2=2;//按pn算出的总的减负荷功率
double f;//f为恢复频率
for(f=48;p3-p2>0.01||p2-p3>0.01;f=f+0.1)
{
p3=0;
p4=0;
if(f>=50)
{
System.out.println("无法用减负荷调节");
f=0;
break;
}
for(int x=0;x<n;x++)
{
if(x==0) p=2*(f-m[x])/(50-2*(50-f));
else p=2*(f-m[x])/(50-2*(50-f))*(1-p3);
p3=p4+p;
p4=p3;
}
p2=(pn-4*(50-f)/50)/(1-2*(50-f)/50);
}
return f;
}
public double getp2(double pp,double pn,int n,double f)
{
double p3=0;//中间变量;
double p4=0;
double p=1;//按f算出的断开功率
double p2=2;//按pn算出的总的减负荷功率
for(int x=0;x<n;x++)
{
if(x==0) p=2*(f-m[x])/(50-2*(50-f))*pp;
else p=2*(f-m[x])/(50-2*(50-f))*(pp-p3);
System.out.println("第"+(x+1)+"次的断开功率为"+(p)+"w");
p3=p4+p;
p4=p3;
}
p2=(pn-4*(50-f)/50)/(1-2*(50-f)/50)*pp;
System.out.println("理论总断开应为"+p2+"w");
return p3*100;
}
}
请问如何解决这个问题呢
相似问题