estamos creando un proyecto con el cual debemos simula una cuenta corriente donde se ingresa codigo nombre apellido y saldo
toda esta informacion se guarda en un archivo txt asta ahi todo bien, ahora mi problema es: no comprendo como rescatar ciertos datos del archivo txt, ejemplo: debo mostrar solo datos que contengar saldos negativo o solo datos que contegan saldos positivos.
pensabamos que debiamos guardar cada linea de datos en un arreglo distinto, y asi poder manejar los datos a nuestra antojo pero no sabemos como implementar nuestra idea
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
//ver registros
try{
FileReader fr = new FileReader("clientes.txt");
BufferedReader bf = new BufferedReader(fr);
String linea;
String linea2="";
while ((linea = bf.readLine())!=null)
linea2+=linea+"\n";
jTextArea1.setText(linea2);
Ah chin.... con qué separas tus datos en cada línea? es decir, separas con comas, pipes, o algo así ?
Porque bien podrías tomar cada renglon, partirlo, ya sea con el método split() de la clase String o bien usando la clase StringTokenizer....
Bueno, suponiendo que haces eso, sabes entonces que (por ejemplo usando split()) obtienenes un arreglo unidimensional de objetos String, entooooonces, pues nada mas ubicas la(s) posición(es) de el(los) objetos a comparar, los comparas y pues.... me imagino que vas a ejecutar algo con el resultado de ésa comparación...y,y,y..... y ya...
FileWriter texto= new FileWriter("clientes.txt", true);
entrada=jTextField1.getText().trim();
codigo = Integer.valueOf(entrada);
exception= record.Account(codigo);
if(exception==true){
throw new exceptionAccount();
}
nombre=jTextField2.getText().trim();
exception1= record.firstName(nombre);
if(exception1==true){
throw new exceptionfirstName();
}
apellido =jTextField3.getText().trim();
exception2= record.firstName(apellido);
if(exception2==true){
throw new exceptionlastName();
}
texto.write(codigo+" ");
texto.write(nombre+" ");
texto.write(apellido+" ");
texto.close();
} catch(NumberFormatException ex){
jTextField1.selectAll();
jTextField1.requestFocus();
JOptionPane.showMessageDialog(null,"Codigo Invalido, esta en Blanco o tiene letras","Error en ingreso de codigo",JOptionPane.ERROR_MESSAGE);
return;
}
catch (exceptionAccount num) {
if(exception){
JOptionPane.showMessageDialog(null,"Codigo Invalido!! debe estar entre 1 y 200","Codigo ERRONEO",JOptionPane.ERROR_MESSAGE);
jTextField1.selectAll();
jTextField1.requestFocus();
return;
}
} catch (exceptionfirstName le) {
if(exception1){
JOptionPane.showMessageDialog(null,"Nombre INCOMPLETO!!!","Error en ingreso de nombre",JOptionPane.ERROR_MESSAGE);
jTextField2.selectAll();
jTextField2.requestFocus();
return;
}
} catch (exceptionlastName let) {
if(exception2){
JOptionPane.showMessageDialog(null,"Apellido INCOMPLETO!!!","Error en ingreso de apellido",JOptionPane.ERROR_MESSAGE);
jTextField3.selectAll();
jTextField3.requestFocus();
return;
}
} catch (Exception e) {
JOptionPane jOP = new JOptionPane();
JOptionPane.showMessageDialog(null, "Error de escritura, archivo de errores","Error de Escritura", 0);
}
try{
FileWriter texto= new FileWriter("clientes.txt", true);
entrada=jTextField4.getText().trim();
saldo = Integer.valueOf(entrada);
exception3 = record.balance(saldo);
if(exception3 == true){
throw new exceptionbalance();
} else
if(exception3==false){
JOptionPane.showMessageDialog(null,"Registro Guardado EXITOSAMENTE","Ingreso de registro",JOptionPane.INFORMATION_MESSAGE); }
texto.write(saldo+" "+"\n");
texto.close();
jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
jTextField4.setText("");
jTextArea1.setText("");
} catch(NumberFormatException m){
jTextField4.selectAll();
jTextField4.requestFocus();
JOptionPane.showMessageDialog(null,"Monto invalido, esta en Blanco o tiene letras","Error en ingreso de monto",JOptionPane.ERROR_MESSAGE);
return;
} catch(exceptionbalance nume){
if(exception3){
JOptionPane.showMessageDialog(null,"Monto debe estar entre -100.000 y 10.000.000","Error en monto de dinero Ingresado",JOptionPane.ERROR_MESSAGE);
jTextField4.selectAll();
jTextField4.requestFocus();
return;
}
} catch (Exception e) {
JOptionPane jOP = new JOptionPane();
JOptionPane.showMessageDialog(null, "Error de escritura, archivo de errores","Error de Escritura", 0);
}
}//GEN-LAST:event_jButton1ActionPerformed
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton6ActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_jButton6ActionPerformed
private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton7ActionPerformed
// TODO add your handling code here:
try{
FileReader fr = new FileReader("clientes.txt");
BufferedReader bf = new BufferedReader(fr);
El separador debe estar estar ( valga la rebuznancia ) separando los campos, a su vez que lo implementas en código...
es decir, en tu archivo puedes tener:
El separador es la coma ( , ) entonces, puedes, en tu fragmento de código, donde está lo de la lectura del archivo, y a su vez lo adhieres a un JTextArea lo siguiente
FileReader fr = newFileReader("clientes.txt"); BufferedReader bf = newBufferedReader(fr); String linea; String linea2=""; while((linea = bf.readLine())!=null){// Yo aquí me olvido de que lo estas agregando el contenido de tus líneas al JTextArea, eso ya lo agregas StringTokenizer tokens = newStringTokenizer( linea , ","){//Aquí el StringTokenizer acepta como argumentos, tu cadena y tu separador
while( tokens.hasMoreTokens()){ // aquí se supone que tendrías que llevar la cuenta de tus campos, // para saber cuándo son datos y cuando los saldos que requieres String elToken = token.nextToken(); //Así recuperas los datos, y pues ya según la posición en que vayas, lo cambias al tipo de dato que necesitas (down casting) //Aquí pues ya irían tus comparaciones.... }
Y si lo necesitas con split() ... pues mejor te dejo la liga a la documentación de StringTokenizer ahí mismo viene explicado cómo funciona cada clase y el método para seleccionar datos de líneas... inténtalo y si tienes otras dudas, pues ya andaremos por aquí ...
Nota: Por favor, pon tú código entre tags de < code > y < / code > así en texto plano es difícil entender todo lo que escribes..
estoy trabajando con netbeans
estoy trabajando con netbeans
Y en que necesitas ayuda. Ya
Y en que necesitas ayuda. Ya dijiste lo que quieres, pero no como ayudarte.
manejo de ficheros txt con interfaz grafica
estamos creando un proyecto con el cual debemos simula una cuenta corriente donde se ingresa codigo nombre apellido y saldo
toda esta informacion se guarda en un archivo txt asta ahi todo bien, ahora mi problema es: no comprendo como rescatar ciertos datos del archivo txt, ejemplo: debo mostrar solo datos que contengar saldos negativo o solo datos que contegan saldos positivos.
pensabamos que debiamos guardar cada linea de datos en un arreglo distinto, y asi poder manejar los datos a nuestra antojo pero no sabemos como implementar nuestra idea
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
//ver registros
try{
FileReader fr = new FileReader("clientes.txt");
BufferedReader bf = new BufferedReader(fr);
String linea;
String linea2="";
while ((linea = bf.readLine())!=null)
linea2+=linea+"\n";
jTextArea1.setText(linea2);
}catch (Exception mia){
JOptionPane.showMessageDialog(null, mia);
}
// object to be written to file
}
logramos aser esto pero nos muestra todos los archivo que existen en el fichero
ojala puedas ayurdarme a que pueda rescatar datos pero cumpliendo las restricciones (<0 o >0)
Ah chin.... con qué separas
Ah chin.... con qué separas tus datos en cada línea? es decir, separas con comas, pipes, o algo así ?
Porque bien podrías tomar cada renglon, partirlo, ya sea con el método
split()
de la claseString
o bien usando la claseStringTokenizer
....Bueno, suponiendo que haces eso, sabes entonces que (por ejemplo usando
split()
) obtienenes un arreglo unidimensional de objetosString
, entooooonces, pues nada mas ubicas la(s) posición(es) de el(los) objetos a comparar, los comparas y pues.... me imagino que vas a ejecutar algo con el resultado de ésa comparación...y,y,y..... y ya...¿?mmm
la verdad esque no tengo nigun separador, me prodrias ayudar a implementarlo en mi codigo?
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
// TODO add your handling code here:
//borrar
jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
jTextField4.setText("");
jTextArea1.setText("");
}//GEN-LAST:event_jButton2ActionPerformed
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
// TODO add your handling code here:
//ver registros
try{
FileReader fr = new FileReader("clientes.txt");
BufferedReader bf = new BufferedReader(fr);
String linea;
String linea2="";
while ((linea = bf.readLine())!=null)
linea2+=linea+"\n";
jTextArea1.setText(linea2);
}catch (Exception mia){
JOptionPane.showMessageDialog(null, mia);
}
// object to be written to file
}//GEN-LAST:event_jButton3ActionPerformed
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed
try {
output = new Formatter( "clientes.txt" );
jPanel5.setVisible(true);
} // end try
catch ( SecurityException securityException ) {
System.err.println(
"Usted no tiene acceso de escritura a este archivo." );
System.exit( 1 );
} // end catch
catch ( FileNotFoundException filesNotFoundException ) {
System.err.println( "Error al crear el archivo." );
System.exit( 1 );
} // end catch
// end method openFile
}//GEN-LAST:event_jButton4ActionPerformed
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed
// TODO add your handling code here:
if ( output != null )
output.close();
jPanel3.setVisible(false);
jPanel2.setVisible(true);
jPanel4.setVisible(true);
}//GEN-LAST:event_jButton5ActionPerformed
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
boolean exception=false, exception1=false, exception2=false, exception3=false;
try {
FileWriter texto= new FileWriter("clientes.txt", true);
entrada=jTextField1.getText().trim();
codigo = Integer.valueOf(entrada);
exception= record.Account(codigo);
if(exception==true){
throw new exceptionAccount();
}
nombre=jTextField2.getText().trim();
exception1= record.firstName(nombre);
if(exception1==true){
throw new exceptionfirstName();
}
apellido =jTextField3.getText().trim();
exception2= record.firstName(apellido);
if(exception2==true){
throw new exceptionlastName();
}
texto.write(codigo+" ");
texto.write(nombre+" ");
texto.write(apellido+" ");
texto.close();
} catch(NumberFormatException ex){
jTextField1.selectAll();
jTextField1.requestFocus();
JOptionPane.showMessageDialog(null,"Codigo Invalido, esta en Blanco o tiene letras","Error en ingreso de codigo",JOptionPane.ERROR_MESSAGE);
return;
}
catch (exceptionAccount num) {
if(exception){
JOptionPane.showMessageDialog(null,"Codigo Invalido!! debe estar entre 1 y 200","Codigo ERRONEO",JOptionPane.ERROR_MESSAGE);
jTextField1.selectAll();
jTextField1.requestFocus();
return;
}
} catch (exceptionfirstName le) {
if(exception1){
JOptionPane.showMessageDialog(null,"Nombre INCOMPLETO!!!","Error en ingreso de nombre",JOptionPane.ERROR_MESSAGE);
jTextField2.selectAll();
jTextField2.requestFocus();
return;
}
} catch (exceptionlastName let) {
if(exception2){
JOptionPane.showMessageDialog(null,"Apellido INCOMPLETO!!!","Error en ingreso de apellido",JOptionPane.ERROR_MESSAGE);
jTextField3.selectAll();
jTextField3.requestFocus();
return;
}
} catch (Exception e) {
JOptionPane jOP = new JOptionPane();
JOptionPane.showMessageDialog(null, "Error de escritura, archivo de errores","Error de Escritura", 0);
}
try{
FileWriter texto= new FileWriter("clientes.txt", true);
entrada=jTextField4.getText().trim();
saldo = Integer.valueOf(entrada);
exception3 = record.balance(saldo);
if(exception3 == true){
throw new exceptionbalance();
} else
if(exception3==false){
JOptionPane.showMessageDialog(null,"Registro Guardado EXITOSAMENTE","Ingreso de registro",JOptionPane.INFORMATION_MESSAGE); }
texto.write(saldo+" "+"\n");
texto.close();
jTextField1.setText("");
jTextField2.setText("");
jTextField3.setText("");
jTextField4.setText("");
jTextArea1.setText("");
} catch(NumberFormatException m){
jTextField4.selectAll();
jTextField4.requestFocus();
JOptionPane.showMessageDialog(null,"Monto invalido, esta en Blanco o tiene letras","Error en ingreso de monto",JOptionPane.ERROR_MESSAGE);
return;
} catch(exceptionbalance nume){
if(exception3){
JOptionPane.showMessageDialog(null,"Monto debe estar entre -100.000 y 10.000.000","Error en monto de dinero Ingresado",JOptionPane.ERROR_MESSAGE);
jTextField4.selectAll();
jTextField4.requestFocus();
return;
}
} catch (Exception e) {
JOptionPane jOP = new JOptionPane();
JOptionPane.showMessageDialog(null, "Error de escritura, archivo de errores","Error de Escritura", 0);
}
}//GEN-LAST:event_jButton1ActionPerformed
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton6ActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_jButton6ActionPerformed
private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton7ActionPerformed
// TODO add your handling code here:
try{
FileReader fr = new FileReader("clientes.txt");
BufferedReader bf = new BufferedReader(fr);
String linea = "";
String linea2="";
while (codigo<0)
linea2+=linea+"\n";
jTextArea1.setText(linea2);
}catch (Exception mia){
JOptionPane.showMessageDialog(null, mia);
}
}//GEN-LAST:event_jButton7ActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new EjecutorScanner().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JButton jButton6;
private javax.swing.JButton jButton7;
private javax.swing.JButton jButton8;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
private javax.swing.JTextField jTextField3;
private javax.swing.JTextField jTextField4;
// End of variables declaration//GEN-END:variables
private Formatter output;
String entrada, nombre, apellido;
CuentaCorriente record;
int codigo, saldo;
}
ahi va mi codigo principal ojala me ayudes a implementarlo
El separador debe estar estar
El separador debe estar estar ( valga la rebuznancia ) separando los campos, a su vez que lo implementas en código...
es decir, en tu archivo puedes tener:
El separador es la coma ( , ) entonces, puedes, en tu fragmento de código, donde está lo de la lectura del archivo, y a su vez lo adhieres a un
JTextArea
lo siguienteBufferedReader bf = new BufferedReader(fr);
String linea;
String linea2="";
while ((linea = bf.readLine())!=null){ // Yo aquí me olvido de que lo estas agregando el contenido de tus líneas al JTextArea, eso ya lo agregas
StringTokenizer tokens = new StringTokenizer( linea , "," ){ //Aquí el StringTokenizer acepta como argumentos, tu cadena y tu separador
while( tokens.hasMoreTokens() ){
// aquí se supone que tendrías que llevar la cuenta de tus campos,
// para saber cuándo son datos y cuando los saldos que requieres
String elToken = token.nextToken();
//Así recuperas los datos, y pues ya según la posición en que vayas, lo cambias al tipo de dato que necesitas (down casting)
//Aquí pues ya irían tus comparaciones....
}
Y si lo necesitas con
split()
... pues mejor te dejo la liga a la documentación deStringTokenizer
ahí mismo viene explicado cómo funciona cada clase y el método para seleccionar datos de líneas... inténtalo y si tienes otras dudas, pues ya andaremos por aquí ...Nota: Por favor, pon tú código entre tags de < code > y < / code > así en texto plano es difícil entender todo lo que escribes..