Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Error al modificar

Estas en el tema de Error al modificar en el foro de Java en Foros del Web. Hola chicos tengo este pequeño problema antes no me funcionaba pero ahora si pero hay un problema a ver en este codigo que pondre a ...
  #1 (permalink)  
Antiguo 26/03/2018, 20:34
 
Fecha de Ingreso: octubre-2015
Mensajes: 30
Antigüedad: 9 años, 1 mes
Puntos: 0
Pregunta Error al modificar

Hola chicos tengo este pequeño problema antes no me funcionaba pero ahora si pero hay un problema a ver en este codigo que pondre a continuación el modificar un registro en el archivo csv funciona solo cuando hay 1 registro pero cuando hay mas de 1 registro me salta este error:

java.lang.ArrayIndexOutOfBoundsException: -1 y cuando abro el archivo estan todos los registros seguidos no uno debajo del otro. a ver si me podeis echar una mano para terminar esto. Gracias de antemano

Código HTML:
@FXML private void edit(){
        clientes cliente = new clientes();
        
        String line = null;
        
         File f1 = new File("C:\\niks\\Clientes.csv");
         try {
			FileReader fr = new FileReader(f1);
			BufferedReader br = new BufferedReader(fr);
			while((line = br.readLine()) !=null) {
				cliente.nombre.set(nombre.getText());
		        cliente.cif.set(cif.getText());
		        cliente.direccion.set(direccion.getText());
		        cliente.numero.set(numero.getText());
		        cliente.poblacion.set(poblacion.getText());
		        cliente.provincia.set(provincia.getText());
		        cliente.pais.set(pais.getText());
		        cliente.cp.set(cp.getText());
		        cliente.telefono.set(telefono.getText());
		        
		         clientes2.set(posicionClienteEnTabla, cliente);
		         
			}
			fr.close();
			 br.close();
			FileWriter fw = new FileWriter(f1);
			BufferedWriter bw= new BufferedWriter(fw);
			for(clientes s: clientes2) {
				
				bw.write(s.getNombre()+";"+s.getTelefono()+";"+s.getCif()+";"+s.getDireccion()+";"+s.getNumero()+";"+s.getProvincia()+";"+s.getPoblacion()+
						";"+s.getCp()+";"+s.getPais());
				bw.flush();
				
			}
			bw.close();
		} catch (Exception ex) {
			
			ex.printStackTrace();
		}
}
__________________
do{
CoffeCup.Drink();
WorkTask.execute();
} while (!WorkTask.Done());
  #2 (permalink)  
Antiguo 27/03/2018, 01:45
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 3 meses
Puntos: 188
Respuesta: Error al modificar

Te falta añadir un bw.newLine() después del bw.write(...)

Sobre el acceso fuera de índices, no sé exactamente en qué linea se te está produciendo ese problema, pero aparentemente hay dos posibilidades.

while((line = br.readLine()) !=null) { => Tendrías que ver qué valor toma line al finalizar el recorrido del archivo.

bw.flush(); => Sácalo fuera del bucle for para testear.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 27/03/2018, 07:19
 
Fecha de Ingreso: octubre-2015
Mensajes: 30
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Error al modificar

bueno pues nada lo que solucione es lo de la linea pero lo del error no y el error me lo da en la linea 202 que es:

Código HTML:
clientes2.set(posicionClienteEnTabla, cliente);
__________________
do{
CoffeCup.Drink();
WorkTask.execute();
} while (!WorkTask.Done());
  #4 (permalink)  
Antiguo 27/03/2018, 07:38
 
Fecha de Ingreso: octubre-2015
Mensajes: 30
Antigüedad: 9 años, 1 mes
Puntos: 0
Respuesta: Error al modificar

vale ya esta solucionado dejo el codigo ya completo por si a alguien le sirve:

Código HTML:
@FXML private void edit(){
        clientes cliente = new clientes();
        
        String line = null;
        
         File f1 = new File("C:\\niks\\Clientes.csv");
         try {
			FileReader fr = new FileReader(f1);
			BufferedReader br = new BufferedReader(fr);
			
			while((line = br.readLine()) !=null) {
				for(int i=0; i<=posicionClienteEnTabla;i++) {
				
					if(line.indexOf(i)!=0){
					
				cliente.nombre.set(nombre.getText());
		        cliente.cif.set(cif.getText());
		        cliente.direccion.set(direccion.getText());
		        cliente.numero.set(numero.getText());
		        cliente.poblacion.set(poblacion.getText());
		        cliente.provincia.set(provincia.getText());
		        cliente.pais.set(pais.getText());
		        cliente.cp.set(cp.getText());
		        cliente.telefono.set(telefono.getText());
		        
		         clientes2.set(posicionClienteEnTabla, cliente);
				}
				}
			}
			fr.close();
			 br.close();
			FileWriter fw = new FileWriter(f1);
			BufferedWriter bw= new BufferedWriter(fw);
			for(clientes s: clientes2) {
				
				bw.write(s.getNombre()+";"+s.getTelefono()+";"+s.getCif()+";"+s.getDireccion()+";"+s.getNumero()+";"+s.getProvincia()+";"+s.getPoblacion()+
						";"+s.getCp()+";"+s.getPais());
				bw.newLine();
				
			}
			bw.flush();
			bw.close();
		} catch (Exception ex) {
			
			ex.printStackTrace();
		}
}
__________________
do{
CoffeCup.Drink();
WorkTask.execute();
} while (!WorkTask.Done());

Etiquetas: javafx
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:40.