Java - Ayuda programa en java

 
Vista:
Imágen de perfil de Ml0x

Ayuda programa en java

Publicado por Ml0x (2 intervenciones) el 23/11/2015 03:26:52
Bueno amigos tengo un problema con mi código, necesito comparar un jTexfield con un String contenido dentro de un archivo txt, el cual es transformado a un arreglo de string con la ayuda de un split.

bueno ocurre que al momento de hacer la comparación me lee solo la primera linea del texto y ademas entra a mi if en la primera linea y al Exeption e arrojando el error de lectura. probando las demás lineas salta directamente al else. llevo bastante rato pegado en aquello.

aquí esta el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
private void buscarVentaActionPerformed(java.awt.event.ActionEvent evt) {
try {
 
File archivo = new File("Compras.txt");
FileReader fr = new FileReader(archivo);
BufferedReader br = new BufferedReader(fr);
 
String linea;
String[] datos = null;
 
while((linea = br.readLine()) != null) {
datos = linea.split(";");
producto.setNombre(datos[0]); //nombre
double precioDouble = Double.parseDouble(datos[1]);
producto.setPrecio(precioDouble);//precio
int cantEntero = Integer.parseInt(datos[2]);
producto.setCantidad(cantEntero); //cantidad
producto.setId(datos[3]);//Id
 
 
//aquí es donde esta el conflicto//
 
if (datos[3].equalsIgnoreCase(ventaid.getText())) {
nombreVenta.setText(producto.getNombre());
String precioString = String.valueOf(producto.getPrecio());
precioVenta.setText(precioString);
double cantDouble = Double.parseDouble(cantidadVenta.getText());
double precioTotal = ((producto.getPrecio()) * cantDouble);
String totalString = Double.toString(precioTotal);
totalVenta.setText(totalString);
 
} else {
JOptionPane.showMessageDialog(null, "No se ha Encontrado el Producto");
break;
}
 
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "¡ERROR DE LECTURA!");
}
}

muchísimas gracias por su tiempo, ojala me puedan ayudar !
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Lawliet
Val: 308
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda programa en java

Publicado por Lawliet (303 intervenciones) el 23/11/2015 17:32:55
Hola...

Serías tan amable de subir tu proyecto para poder revisarlo, además de agregar el archivo de texto para realizar las pruebas ^^. Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de camilo

Ayuda programa en java

Publicado por camilo (2 intervenciones) el 23/11/2015 18:27:58
muchas gracias por tu tiempo amigo, y discúlpame el desorden de mi código !
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Lawliet
Val: 308
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda programa en java

Publicado por Lawliet (303 intervenciones) el 23/11/2015 19:56:37
Hola...

Gracias! Más que nada solo me interesaba ver tu archivo pero gracias por el proyecto ya que así pude ver que no había mucho que analizar.

Lo realice de la siguiente manera y no tengo problema alguno ^^.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
public class LecturaArchivoFormulario extends JFrame implements ActionListener{
 
	private static final long serialVersionUID = 8507186159859322119L;
 
	JTextField txtComparar;
 
	public LecturaArchivoFormulario(){
		// Configuración Inicial
		super("Lectura Archivo");
		setSize(250,100);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
 
		// Componentes
		JPanel pnlBotones = new JPanel();
		pnlBotones.setLayout(new FlowLayout());
		txtComparar = new JTextField(20);
		JButton btnLeer = new JButton("Leer Archivo");
		btnLeer.addActionListener(this);
		pnlBotones.add(txtComparar);
		pnlBotones.add(btnLeer);
 
		// Contenedor
		Container container = getContentPane();
		container.add(pnlBotones);
	}
 
	public static void main(String[] args) {
		LecturaArchivoFormulario vista = new LecturaArchivoFormulario();
		vista.setVisible(true);
		vista.setResizable(false);
	}
 
	public void actionPerformed(ActionEvent evt) {
		List<Producto> listaProducto = new ArrayList<Producto>();
		Producto producto = null;
		File archivo;
		FileReader fr;
		BufferedReader br;
		String linea;
		String[] datos = null;
		try {
			archivo = new File("C:\\Users\\Quality\\Downloads\\Control3\\Compras.txt");
			fr = new FileReader(archivo);
			br = new BufferedReader(fr);
 
			while((linea = br.readLine()) != null) {
				datos = linea.split(";");
				producto = new Producto();
				producto.setId(datos[3]);
				producto.setNombre(datos[0]);
				producto.setPrecio(Double.parseDouble(datos[1]));
				producto.setCantidad(Integer.parseInt(datos[2]));
				listaProducto.add(producto);
			}
 
			boolean isEncontrado = false;
 
			for(Producto valor : listaProducto){
				if (valor.getId().equals(txtComparar.getText())){
					isEncontrado = true;
				} else {
					isEncontrado = false;
				}
			}
 
			if(isEncontrado){
				JOptionPane.showMessageDialog(null, "Producto Encontrado: " + txtComparar.getText());
			} else {
				JOptionPane.showMessageDialog(null, "Producto No Encontrado: " + txtComparar.getText());
			}
		} catch (FileNotFoundException fnfe) {
			fnfe.printStackTrace();
		} catch (IOException ioe) {
			ioe.printStackTrace();
		} catch (Exception e){
			e.printStackTrace();
		}
	}
}

No tengo mucho que explicar, si te das cuenta es un formulario pequeño y sencillo donde tengo un campo de texto con un botón para realizar la comparación, sin embargo, debes tener en cuenta dos cosas.

1.- El campo de texto debes tenerlo de manera global para clase, para poder hacer la comparación correspondiente.
2.- Debes crear una lista que te permita guardar los datos de todas las líneas del fichero, ya que si solamente llamas a tu objeto mientras haces el recorrido del fichero, lo único que haces es sobrescribir el dato guardo.

Sin mas que comentar, cualquier duda y/o inconveniente, aquí estamos.

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar