ANEXO : Programa JAVA de determinación del Dbaf con el nuevo método import java.util.*; import java.lang.*; import java.io.*; public class Algo { public static void main(String[] args) throws IOException {BufferedReader entry=new BufferedReader(new InputStreamReader(System.in)); { System.out.println("marque su previsión"); String s=entry.readLine(); double f=Double.parseDouble(s); //f es ahora la previsión para el mes siguiente System.out.println("marque su umbral de tolerancia (ejemplo 0.05)"); s =entry.readLine(); double d=Double.parseDouble(s); //d es ahora la desviación permitida System.out.println("de cuantos meses disponemos? (al menos 2)"); s =entry.readLine(); int n=Integer.parseInt(s); //n es el número de meses while (n<2) { // bucle para verificar que al menos 2 meses se tienen en cuenta System.out.println("al menos 2 meses"); System.out.println("marque de nuevo el número de meses"); s =entry.readLine(); n=Integer.parseInt(s); } double q[]=new double[n]; double diff[]=new double[n]; int m=0; double sum=0; // se entran las estadísticas de los meses for (int i=0;i<n;i++) { i++; System.out.println("entre la cifra del mes "+i); i--; s =entry.readLine(); q[i]=Double.parseDouble(s); diff[i]=Math.abs((q[i]-f)/f); // diff es la desviación permitidada if(diff[i]<=d) { m++; sum+=q[i]; } } //m es el número de meses validados //sum es la suma de las cifras corespondantes //en el caso de que menos de 2 meses aprueban... if (m<2) { int index1=0; int index2=1; //...se recogen los dos meses más cercanos for (int i=1;i<n;i++) { if (diff[i]<diff[index1]) { index2=index1; index1=i; } } for (int i=0;i<n;i++) { if (((i!=index1))&&(diff[i]<diff[index2])){ index2=i; } } m=2; sum=q[index1]+q[index2]; } double result=(sum+f)/(m+1); System.out.println("Dbaf = "+result+" "); } } }