¿Cómo puedo hacer para crear un archivo .dat?
Publicado por el fisico (9 intervenciones) el 30/01/2009 19:38:00
Ayuda a tos los expertos en Java.
Soy panameño, formado en física, y estoy aprendiendo por mi cuenta en aprender Java, para ello estoy utilizando el libro COMO PROGRAMAR EN JAVA 7ma edición de Dietel-Dietel. Bien hasta el momento he avanzado satisfactoriamente. Resulta que me he "estancado" en el tema de creación de archivos. Explico.
Estoy interesado en generar un archivo con extensión .dat para reproducir el comportamiento gráfico de algunas funciones matemáticas. El código fuente que te anexo a continuación fue generado con el software NetBeans IDE 6.5 con el Java 1.6.0. El mismo como podrá verificar es ejecutado a satisfacción, pero lamentablemente no me crea el archivo "BESSEL.DAT" que deseo utilizar posteriormente. El código fuente me crea el archivo en el lugar indicado, pero me dice que el mismo posee 0 kb de tamaño. No he sido capaz de averiguar que es lo que ha estado ocurriendo; tengo más de una semana con este problema y nada.
Agradezco de antemano cualquier ayuda que me puedan brindar para superar esta situación.
El código fuente es el siguiente:
package ejemplosfisica229a;
// Paquetes Java.
import java.io.*;
public class ejemplo30 {
// Declaración de las variables a utilizar.
private int x0, // argumento de la funciones de Bessel.
n; // índice de la función de Bessel.
private double[][] suma0 = new double[200][200];
private double[][] bessel = new double[200][200];
private double[][] coef0 = new double[200][200];
public static void main(String[] args) {
ejemplo30 fisica229a = new ejemplo30();
fisica229a.init();
} // Final de la clase main.
public void init() {
try {
// Crea archivo de salida .dat.
FileWriter archivo = new FileWriter("bessel.dat");
BufferedWriter bw = new BufferedWriter(archivo);
PrintWriter salida = new PrintWriter(bw);
bw = new BufferedWriter(new FileWriter("bessel.dat", true));
salida = new PrintWriter(bw);
// Realización de los cálculos
for(n = 0; n < 5; n++) {
for(x0 = 0; x0 <= 15; x0++) {
coef0[n][x0] = Math.pow(x0, n);
suma0[n][x0] = sumatorio(n, x0);
bessel[n][x0] = coef0[n][x0] * suma0[n][x0];
}
}
// Muestra los resultados obtenidos.
System.out.println("x J_0(x) J_1(x) J_2(x) J_3(x) " +
"J_4(x) ");
for(x0 = 0; x0 <= 15; x0++) {
System.out.printf("%.2f %.5f %.5f %.5f %.5f %.5f ",
(double)x0, bessel[0][x0], bessel[1][x0], bessel[2][x0],
bessel[3][x0], bessel[4][x0]);
salida.printf("%.2f %.5f %.5f %.5f %.5f %.5f ", (double)x0,
bessel[0][x0], bessel[1][x0], bessel[2][x0], bessel[3][x0],
bessel[4][x0]);
}
System.out.println("He terminado de crear el archivo.");
System.exit(0); // finaliza aplicación
salida.close();
}
catch(java.io.IOException ioex) {
}
} // cierre de la clase init.
/* **********************************
* **** Creación de los métodos. ****
* ********************************** */
public double gammln(double xx) {
int m = 5, j;
double x, y, tpm, ser, coef[], factor;
coef = new double[6]; // Crea el espacio para el arreglo.
coef[0] = 76.18009172947146;
coef[1] = -86.50532032941677;
coef[2] = 24.01409825083091;
coef[3] = -1.231739575450155;
coef[4] = 0.1208650973866179E-02;
coef[5] = -0.5395239384953E-05;
y = x = xx;
tpm = x + 5.5;
tpm -= (x + 0.50) * Math.log(tpm);
ser = 1.000000000190015;
for(j = 0; j <= m; j++)
ser += coef[j]/++y;
factor = -tpm + Math.log(2.5066282746310005 * ser/x);
return factor;
} // Final del método gammln.
// ************************************
public double factrl(int n) {
int ntop = 4, j;
double a[] = {1.0, 1.0, 2.0, 6.0, 24.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
if(n < 0) {
System.out.println("Número inválido. El programa será abortado.");
System.exit(1); // Aborta la ejecución del método.
}
else if(n > 32) {
return Math.exp(gammln((double)n + 1.0)); // Llama al método gammln.
} // Cierre del ciclo if-else
while(ntop < n) {
j = ntop++;
a[ntop] = a[j] * (double)ntop;
} // Cierre del ciclo while.
return a[n];
} // Cierre del método factrl.
// ***************************************************************
double sumatorio(int n, double x) {
int k;
double suma = 0.0, coef1, coef2;
for(k = 0; k <= 100; k++){
coef1 = Math.pow(-1.0, k) * Math.pow(x, 2 * k);
coef2 = Math.pow(2.0, 2 * k + n) * factrl(k) * factrl(n + k);
suma += coef1/coef2;
} // cierre del ciclo for
return suma;
} // cierre del método sumatorio.
} // cierre de la clase ejemplo30
Soy panameño, formado en física, y estoy aprendiendo por mi cuenta en aprender Java, para ello estoy utilizando el libro COMO PROGRAMAR EN JAVA 7ma edición de Dietel-Dietel. Bien hasta el momento he avanzado satisfactoriamente. Resulta que me he "estancado" en el tema de creación de archivos. Explico.
Estoy interesado en generar un archivo con extensión .dat para reproducir el comportamiento gráfico de algunas funciones matemáticas. El código fuente que te anexo a continuación fue generado con el software NetBeans IDE 6.5 con el Java 1.6.0. El mismo como podrá verificar es ejecutado a satisfacción, pero lamentablemente no me crea el archivo "BESSEL.DAT" que deseo utilizar posteriormente. El código fuente me crea el archivo en el lugar indicado, pero me dice que el mismo posee 0 kb de tamaño. No he sido capaz de averiguar que es lo que ha estado ocurriendo; tengo más de una semana con este problema y nada.
Agradezco de antemano cualquier ayuda que me puedan brindar para superar esta situación.
El código fuente es el siguiente:
package ejemplosfisica229a;
// Paquetes Java.
import java.io.*;
public class ejemplo30 {
// Declaración de las variables a utilizar.
private int x0, // argumento de la funciones de Bessel.
n; // índice de la función de Bessel.
private double[][] suma0 = new double[200][200];
private double[][] bessel = new double[200][200];
private double[][] coef0 = new double[200][200];
public static void main(String[] args) {
ejemplo30 fisica229a = new ejemplo30();
fisica229a.init();
} // Final de la clase main.
public void init() {
try {
// Crea archivo de salida .dat.
FileWriter archivo = new FileWriter("bessel.dat");
BufferedWriter bw = new BufferedWriter(archivo);
PrintWriter salida = new PrintWriter(bw);
bw = new BufferedWriter(new FileWriter("bessel.dat", true));
salida = new PrintWriter(bw);
// Realización de los cálculos
for(n = 0; n < 5; n++) {
for(x0 = 0; x0 <= 15; x0++) {
coef0[n][x0] = Math.pow(x0, n);
suma0[n][x0] = sumatorio(n, x0);
bessel[n][x0] = coef0[n][x0] * suma0[n][x0];
}
}
// Muestra los resultados obtenidos.
System.out.println("x J_0(x) J_1(x) J_2(x) J_3(x) " +
"J_4(x) ");
for(x0 = 0; x0 <= 15; x0++) {
System.out.printf("%.2f %.5f %.5f %.5f %.5f %.5f ",
(double)x0, bessel[0][x0], bessel[1][x0], bessel[2][x0],
bessel[3][x0], bessel[4][x0]);
salida.printf("%.2f %.5f %.5f %.5f %.5f %.5f ", (double)x0,
bessel[0][x0], bessel[1][x0], bessel[2][x0], bessel[3][x0],
bessel[4][x0]);
}
System.out.println("He terminado de crear el archivo.");
System.exit(0); // finaliza aplicación
salida.close();
}
catch(java.io.IOException ioex) {
}
} // cierre de la clase init.
/* **********************************
* **** Creación de los métodos. ****
* ********************************** */
public double gammln(double xx) {
int m = 5, j;
double x, y, tpm, ser, coef[], factor;
coef = new double[6]; // Crea el espacio para el arreglo.
coef[0] = 76.18009172947146;
coef[1] = -86.50532032941677;
coef[2] = 24.01409825083091;
coef[3] = -1.231739575450155;
coef[4] = 0.1208650973866179E-02;
coef[5] = -0.5395239384953E-05;
y = x = xx;
tpm = x + 5.5;
tpm -= (x + 0.50) * Math.log(tpm);
ser = 1.000000000190015;
for(j = 0; j <= m; j++)
ser += coef[j]/++y;
factor = -tpm + Math.log(2.5066282746310005 * ser/x);
return factor;
} // Final del método gammln.
// ************************************
public double factrl(int n) {
int ntop = 4, j;
double a[] = {1.0, 1.0, 2.0, 6.0, 24.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
if(n < 0) {
System.out.println("Número inválido. El programa será abortado.");
System.exit(1); // Aborta la ejecución del método.
}
else if(n > 32) {
return Math.exp(gammln((double)n + 1.0)); // Llama al método gammln.
} // Cierre del ciclo if-else
while(ntop < n) {
j = ntop++;
a[ntop] = a[j] * (double)ntop;
} // Cierre del ciclo while.
return a[n];
} // Cierre del método factrl.
// ***************************************************************
double sumatorio(int n, double x) {
int k;
double suma = 0.0, coef1, coef2;
for(k = 0; k <= 100; k++){
coef1 = Math.pow(-1.0, k) * Math.pow(x, 2 * k);
coef2 = Math.pow(2.0, 2 * k + n) * factrl(k) * factrl(n + k);
suma += coef1/coef2;
} // cierre del ciclo for
return suma;
} // cierre del método sumatorio.
} // cierre de la clase ejemplo30
Valora esta pregunta


0