import java.io.*;
class Esquema
{
String atributo[] = new String[20];
String tipo[] = new String[20];
int longitud[] = new int[20];
int decimal[] = new int[20];
int posicion[] = new int[20];
String contenido[] = new String[20];
int ultimo ;
Esquema(String _nombreTabla)
{
boolean hayDatos = true;
int acumulado ;
String area ;
try
{
BufferedReader entrada =
new BufferedReader(new FileReader(_nombreTabla + ".def"));
ultimo = 0;
acumulado = 0;
while( hayDatos )
{
area = entrada.readLine();
if( area == null )
hayDatos = false;
else
{
atributo[ultimo] = area;
tipo[ultimo] = entrada.readLine();
area = entrada.readLine();
longitud[ultimo] = Integer.parseInt(area);
area = entrada.readLine();
if( area == null )
decimal[ultimo] = 0;
else
decimal[ultimo] = Integer.parseInt(area);
posicion[ultimo] = acumulado;
acumulado += longitud[ultimo];
ultimo++;
}
}
entrada.close();
}
catch(IOException e)
{}
}
/** DEVULVE EL INDICE DEL ULTIMO ATRIBUTO DE LA TABLA */
int daUltimo()
{
return ultimo;
}
/** DEVULVE EL TAMAÑO DE LA TUPLA EN BYTES */
int tamano()
{
int _tamano ;
_tamano = 0;
for(int i = 0; i < ultimo; i++ )
_tamano += longitud[i];
return _tamano;
}
/** INDICA EL INDICE DE UN ATRIBUTO EN BASE A SU NOMBRE*/
int daIndice(String _atributo)
{
int i ;
boolean esta ;
esta = false;
for( i = 0; (i < ultimo) && esta == false; i++ )
if( _atributo.equals(atributo[i]) )
esta = true;
if( esta )
return i;
else
return -1;
}
int daPosicion(int _indice)
{
return posicion[_indice];
}
int daLongitud(int _indice)
{
return longitud[_indice];
}
String daAtributo(int _indice)
{
return atributo[_indice];
}
String daTipo(int _indice)
{
return tipo[_indice];
}
int daDecimal(int _indice)
{
return decimal[_indice];
}
String daContenido(int _indice)
{
return contenido[_indice];
}
/** INICIALIZA LAS AREAS DE CONTENIDO CON NULOS */
void limpia()
{
for( int i = 0; i < ultimo; i++ )
contenido[i] = new String("");
}
/** GUARDA EL CONTENIDO DE UN ATRIBUTO */
void guarda(int _indice ,String _valor)
{
StringBuffer dato = new StringBuffer(longitud[_indice]);
int _longitud ;
//System.out.println("atributo " + _indice + " " + _valor);
if( _valor.length() > longitud[_indice] )
dato = new StringBuffer(_valor.substring(0 ,longitud[_indice]));
else
dato = new StringBuffer(_valor);
//System.out.println("/"+dato+"/");
for( _longitud = dato.length(); _longitud < longitud[_indice]; _longitud++ )
dato.append(" ");
//System.out.println("/"+dato+"/");
contenido[_indice] = new String(dato);
}
/** RECUPERA EL CONTENIDO DE UN ATRIBUTO */
String recupera(int _indice)
{
return contenido[_indice];
}
String daTupla()
{
StringBuffer tupla = new StringBuffer(250);
int i ;
for( i = 0; i < ultimo; i++ )
{
tupla.append(contenido[i]);
}
return tupla.toString();
}
void carga(String _registro)
{
for( int i = 0; i < ultimo; i++ )
{
contenido[i] = new String(_registro.substring(posicion[i] ,posicion[i] + longitud[i]));
// System.out.println("/" +contenido[i] + "/");
}
}
}
class Tabla extends Esquema
{
String nombreTabla ;
RandomAccessFile archivo = null;
Registro registro ;
Tabla(String _nombreTabla)
{
super(_nombreTabla);
nombreTabla = _nombreTabla;
try {
archivo = new RandomAccessFile(_nombreTabla + ".inf" ,"rw");
}catch(IOException e){}
}
void escribe(long _indice ,String _tupla)
{
try {
archivo.seek(_indice * super.tamano());
archivo.writeBytes(_tupla);
}catch(IOException e){}
}
String lee(long _indice)
{
byte arreglo[] = new byte[super.tamano()];
try
{
archivo.seek(_indice * super.tamano() );
archivo.read(arreglo); // ,0 ,super.tamano());
}
catch(IOException e)
{}
return new String(arreglo);
}
long ultimaTupla()
{
long registros = 0;
try
{
registros = archivo.length() / super.tamano();
}
catch(IOException e)
{}
return registros;
}
void cierra()
{
try
{
archivo.close();
}
catch(IOException e)
{}
}
}
class Smbd
{
public static void main(String args[]) throws IOException
{
BufferedReader consola = new BufferedReader(new InputStreamReader(System.in));
int opcion ,indice ,ultimo = 0;
Tabla tabla = null ;
// DESPLEGA UN INDICADOR PARA LEER UN DATO
opcion = 0;
while( opcion != 5 )
{
System.out.println("\n1. Abrir Tabla\n2. Lee Tupla i\n3. Escribe Tupla i\n4. Despliega Tabla\n5. Salir");
System.out.print("> ");
String cadena = consola.readLine();
try
{
opcion = Integer.parseInt(cadena);
}
catch(Exception e)
{
opcion = 0;
}
switch( opcion )
{
case 1:
System.out.print("tabla> ");
cadena = consola.readLine();
tabla = new Tabla(cadena);
ultimo = tabla.daUltimo();
for( indice = 0; indice < ultimo; indice++ )
{
System.out.println(tabla.daAtributo(indice) + " " +
tabla.daTipo(indice) + " " +
tabla.daLongitud(indice) + " " +
tabla.daDecimal(indice));
}
System.out.println("Hay " + tabla.ultimaTupla() + " registros");
break;
case 2:
System.out.print("\ntupla #> ");
cadena = consola.readLine();
String reg = tabla.lee(Integer.parseInt(cadena));
System.out.println("/"+ reg +"/");
tabla.carga(reg);
for( indice = 0; indice < ultimo; indice++ )
{
System.out.println(tabla.daAtributo(indice)+ " /"
+ tabla.daContenido(indice) +"/");
}
break;
case 3:
tabla.limpia();
for( indice = 0; indice < ultimo; indice++ )
{
System.out.print(tabla.daAtributo(indice)+ "> ");
cadena = consola.readLine();
tabla.guarda(indice ,cadena);
}
System.out.print("/"+ tabla.daTupla() + "/\ntupla #> ");
cadena = consola.readLine();
tabla.escribe(Integer.parseInt(cadena) ,tabla.daTupla());
break;
case 4:
long numReg ,ultimoReg ;
ultimoReg = tabla.ultimaTupla();
for( numReg = 0; numReg < ultimoReg; numReg++ )
{
reg = tabla.lee(numReg);
tabla.carga(reg);
System.out.println(numReg + " /"+ tabla.daTupla() + "/");
}
break;
case 5:
tabla.cierra();
break;
}
}
}
}
Diccionario de Datos /* Abc.java
ACTUALIZACION EN UNA TABLA
2003 07 Jesus Olivares
*/
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class LeeRegistro extends JFrame
{
// PANEL AJUSTABLE PARA LA PANTALLA
JSplitPane panelAjustable = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
// ETIQUETAS DE LOS CAMPOS DE DATOS
JLabel eAtributo = new JLabel("Atributo:" );
JLabel eTipo = new JLabel("Tipo: ");
JLabel eLongitud = new JLabel("Longitud: ");
JLabel eDecimal = new JLabel("Decimal: ");
// CAMPOS DE DATOS
JTextField vAtributo = new JTextField(20);
JTextField vTipo = new JTextField(1);
JTextField vLongitud = new JTextField(3);
JTextField vDecimal = new JTextField(2);
// BOTONES DE ACTUALIZACION
JPanel panelBotones = new JPanel(new FlowLayout());
// OBJETO AL QUE SE LE AGREGA EL REGISTRO O EN EL QUE SE HACEN CAMBIOS
DefaultTableModel modelo ;
int renglon ;
boolean hacerCambio ;
JButton salir = new JButton("Cancelar");
ActionListener accionSalir = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
dispose();
}
};
JButton aceptar = new JButton("Aceptar");
ActionListener accionAceptar = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
if( hacerCambio )
{
modelo.setValueAt(vAtributo.getText(), renglon ,0);
modelo.setValueAt(vTipo.getText(), renglon ,1);
modelo.setValueAt(vLongitud.getText(), renglon ,2);
modelo.setValueAt(vDecimal.getText(), renglon ,3);
}
else
{
String info [] = new String[4];
info[0] = vAtributo.getText();
info[1] = vTipo.getText();
info[2] = vLongitud.getText();
info[3] = vDecimal.getText();
modelo.addRow(info);
}
dispose(); // CIERRA LA VENTANA
}
};
void construyeVentana()
{
Container cont = getContentPane();
Panel panel = new Panel(new GridLayout(5,2));
// ASIGNA LOS COMPONENTES EN EL PANEL DE BOTONES
panel.add(eAtributo);
panel.add(vAtributo);
panel.add(eTipo);
panel.add(vTipo);
panel.add(eLongitud);
panel.add(vLongitud);
panel.add(eDecimal);
panel.add(vDecimal);
panel.add(aceptar);
panel.add(salir);
cont.add(panel);
// ASIGNA LAS ACCIONES
aceptar.addActionListener(accionAceptar);
salir.addActionListener(accionSalir);
// ACCION PARA CUANDO SE PIDE EL CIERRE DE LA VENTANA
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
dispose();
}
});
}
// CONSTRUCTOR PARA HACER ALTAS
public LeeRegistro(DefaultTableModel _modelo)
{
modelo = _modelo;
construyeVentana();
hacerCambio = false;
}
// CONSTRUCTOR PARA HACER CAMBIOS
public LeeRegistro(DefaultTableModel _modelo ,String []datos ,int _renglon)
{
modelo = _modelo;
construyeVentana();
renglon = _renglon;
// ASIGNA LOS COMPONENTES EN EL PANEL DE BOTONES
vAtributo.setText(datos[0]);
vTipo.setText(datos[1]);
vLongitud.setText(datos[2]);
vDecimal.setText(datos[3]);
hacerCambio = true;
}
}
class PantallaAbc extends JFrame
{
// PANEL AJUSTABLE PARA LA PANTALLA
JSplitPane panelAjustable = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
// DATOS DE LA TABLA
DefaultTableModel modelo = new DefaultTableModel(0,4);
JTable tabla = new JTable(modelo);
JScrollPane panelScroll = new JScrollPane(tabla);
JPanel marcoTabla = new JPanel(new GridLayout(1,1));
JTextField tablaNombre = new JTextField(15);
// BOTONES DE ACTUALIZACION
JButton alta = new JButton("ALTA");
ActionListener altaAccion = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
LeeRegistro nuevo = new LeeRegistro(modelo);
nuevo.setSize(300,200);
nuevo.show();
}
};
JButton baja = new JButton("BAJA");
ActionListener bajaAccion = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
int ultimo ,seleccion ;
ultimo = tabla.getRowCount();
seleccion = tabla.getSelectedRow();
if( seleccion != -1 )
modelo.removeRow(seleccion);
}
};
JButton cambio = new JButton("CAMBIO");
ActionListener cambioAccion = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
int seleccion ;
seleccion = tabla.getSelectedRow();
if( seleccion != -1 )
{
String [] datos = new String[4];
datos[0] = (String)modelo.getValueAt(seleccion ,0);
datos[1] = (String)modelo.getValueAt(seleccion ,1);
datos[2] = (String)modelo.getValueAt(seleccion ,2);
datos[3] = (String)modelo.getValueAt(seleccion ,3);
LeeRegistro nuevo = new LeeRegistro(modelo, datos ,seleccion);
nuevo.setSize(300,200);
nuevo.show();
}
}
};
JButton salir = new JButton("SALIR");
ActionListener salirAccion = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
dispose();
}
};
JButton guarda = new JButton("GUARDA");
ActionListener guardaAccion = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String [] datos = new String[4];
int ultimo ,seleccion ;
try{
BufferedWriter salida =
new BufferedWriter(new FileWriter(tablaNombre.getText() + ".def" ,true));
ultimo = tabla.getRowCount();
for( seleccion = 0; seleccion < ultimo; seleccion++ )
{
datos[0] = (String)modelo.getValueAt(seleccion ,0);
datos[1] = (String)modelo.getValueAt(seleccion ,1);
datos[2] = (String)modelo.getValueAt(seleccion ,2);
datos[3] = (String)modelo.getValueAt(seleccion ,3);
// ESCRIBE EL RESULTADO DE LA SUMA EN EL ARCHIVO DE SALIDA
salida.write(datos[0] + "\n");
salida.write(datos[1] + "\n");
salida.write(datos[2] + "\n");
salida.write(datos[3] + "\n");
}
salida.close();
}catch(IOException evento){
System.out.println("HAY PROBLEMAS" + evento);
}
try
{
RandomAccessFile contenido = new RandomAccessFile(tablaNombre.getText() + ".inf" ,"rw");
contenido.close();
}
catch(IOException ex)
{}
System.out.println("tabla creada");
}
};
JButton carga = new JButton("CARGA");
ActionListener cargaAccion = new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
}
};
// PANEL PARA COLOCAR LOS BOTONES
JPanel panelBotones = new JPanel(new FlowLayout());
// CONSTRUCTOR
public PantallaAbc()
{
Container cont = getContentPane();
// COLOCA LOS ENCABEZADOS DE LAS COLUMNAS EN LA TABLA
tabla.getColumnModel().getColumn(0).setHeaderValue("atributo");
tabla.getColumnModel().getColumn(1).setHeaderValue("tipo");
tabla.getColumnModel().getColumn(2).setHeaderValue("longitud");
tabla.getColumnModel().getColumn(3).setHeaderValue("decimal");
// LA SELECCION DE ELEMENTOS ES SIMPLE
tabla.setSelectionMode((int)ListSelectionModel.SINGLE_SELECTION);
// ASIGNA LA TABLA EN EL PANEL DE MARCO
panelScroll.setPreferredSize(new Dimension(400, 300));
panelScroll.setMinimumSize(new Dimension(300, 200));
marcoTabla.setBorder(BorderFactory.createTitledBorder("Tabla"));
marcoTabla.add(panelScroll);
// ASIGNA LOS BOTONES DE ACCION EN EL PANEL DE BOTONES
panelBotones.add(alta);
panelBotones.add(baja);
panelBotones.add(cambio);
panelBotones.add(guarda);
panelBotones.add(carga);
panelBotones.add(tablaNombre);
panelBotones.add(salir);
// COLOCA LOS PANELES EN LA PANTALLA
panelAjustable.add(marcoTabla);
panelAjustable.add(panelBotones);
// AGREGA EL panelAjustable EN EL PANEL PRINCIPAL CENTRADO
cont.setLayout(new BorderLayout());
cont.add(panelAjustable, BorderLayout.CENTER);
// ASIGNA LAS ACCIONES
alta.addActionListener(altaAccion);
salir.addActionListener(salirAccion);
baja.addActionListener(bajaAccion);
cambio.addActionListener(cambioAccion);
guarda.addActionListener(guardaAccion);
carga.addActionListener(cargaAccion);
// ACCION PARA CUANDO SE PIDE EL CIERRE DE LA VENTANA
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
dispose();
}
});
}
}
class Abc
{
public static void main(String args[])
{
PantallaAbc captura = new PantallaAbc();
captura.setSize(400, 400);
captura.show();
}
}
|
© Jesús M. Olivares Ceja septiembre 2003 mail@jesusolivares.com México
se agradece!!!
Muy bueno tu post, pero tengo una pregunta, cuando digo que quiero imprimir los datos contenidos en mi ArrayList
System.out.println(“Primera Posición”+lstUnidades.get(3));
En este caso la posicion 3, obtengo lo siguiente:
“Primera PosiciónModelo.VOUnidadMedida@23e94776″
¿Cómo logro acceder al dato? Esta parece la dirección del objeto pero no su contenido, ¿Por qué se presenta esto?
Te agradezco un montón!
Entiendo que “lstUnidades” es un arrayList de objetos de alguna clase que tu te has creado. Entonces lo que te esta dando es ese objeto en un string. Si por ejemplo ese objeto tuviese un atributo “nombre” y tuvieses el método get implementado (ejm: getNombre) para imprimir tendrías que poner lo siguiente:
System.out.println(“Primera Posición”+lstUnidades.get(3).getNombre());
De esta forma se te imprimiria el atributo nombre del objeto.
Supongo que es eso lo que te pasa, pero con la información que me das no te puedo ayudar mas. Cualquier cosa vuelve a escribir.
SL2
como podria borrar un nombre mandandole yo la posicion que quiero borrar ?
Cuando te refieres a arreglo no array, ¿a que tipo de estructura de datos te refieres? ¿List, ArrayList, HashMap, etc? Normalmente todas las estructuras de datos tienen alguna función de eliminación de elementos.
Después, sobre lo que comentas de la compatibilidad String con int, huele a que estás comparando justo eso. Prueba un truco sencillo, que es en el momento de la comparación y si la variables se llaman X e Y, sumarles unas comillas vacías; es decir, hacer un X+”" y un Y+”" , con esto conviertes a String las dos variables y no deberías de tener problemas. También recuerda que para comparar Strings se hace con la función equals(), como por ejemplo:
(X+”").equals(Y+”")
mucho ánimo a este mundo de Java, ya verás como es apasionante y en poco te convertirás en todo un experto
Y ya sabes que puedes contar con nosotros ante cualquier duda que necesites aclarar.
SL2
Excelente la data que han posteado.
Les detallo: necesito un programa que lea objetos de tipo container, que tienen algunos atributos a saber: nombre, puerto de carga, puerto de descarga, tipo y peso, y que luego me los muestre por pantalla.
Yo ya hice la clase “Containers” en donde desarrollé, como ustedes aca con los partidos, los atributos del objeto container:
Variables
nombre: de tipo string
puertoCarga: tipo string
puertoDescarga: tipo string
tipo: tipo integer (ya que necesito saber si son de 20 o de 40 nomás) (calculo que también podría ser boolean)
peso: de tipo float
y sus “Getters” and “Setters”
con eso tengo la clase para luego poder crear objetos de tipo Container con los atributos mencionados.
hasta ahí todo bien, el problema está en que en el main desarrollé los métodos “cargarcontainers” y “mostrarcontainers” y, o me da un error la ejecución o no me da lo que necesito, y el tema es que es tan tonto lo que necesito que me da hasta verguenza no saber resolverlo! y seguro que la solución la tengo al alcance de la mano pero no logro darme cuenta, por eso, me tomo el atrevimiento de copiarles mi código para ver si ustedes pueden explicarme cuál es mi error:
import java.util.*;
public class Principal{
static ArrayList containers = new ArrayList (); //Aca voy a guardar los containers que vaya leyendo
static Scanner sc = new Scanner (System.in); //Scanner para leer datos de teclado
public static void main (String [] args){
cargarContainers();
System.out.println(“”);
System.out.println(“Lista de containers:”);
System.out.println(“Containers: ” + containers.size());
System.out.println(“”);
mostrarContainers();
System.out.println(“”);
System.out.println(“Todos los containers han sido mostrados!”);
}//Fin del método Main
public static void cargarContainers (){
String nombre;
String puertoCarga;
String puertoDescarga;
int tipo;
int peso;
int N;
Containers aux = new Containers ();
System.out.println(“Ingrese el número de Containers para cargar: “);
N=sc.nextInt();
for (int i=0; i<N; i++){
sc.nextLine();
System.out.println("");
System.out.println("Container N° " + (i+1) + " : ");
System.out.println("Nombre: ");
nombre = sc.nextLine();
aux.setNombre(nombre);
System.out.println("Puerto de Carga: ");
puertoCarga = sc.nextLine();
aux.setPuertoCarga(puertoCarga);
System.out.println("Puerto de Descarga: ");
puertoDescarga = sc.nextLine();
aux.setPuertoDescarga(puertoDescarga);
System.out.println("Tipo (20 / 40): ");
tipo = sc.nextInt();
aux.setTipo(tipo);
System.out.println("Peso: ");
peso = sc.nextInt();
aux.setPeso(peso);
containers.add(aux); //Con esta orden deberían poder guardarse todos los atributos en el arraylist
}//Fin del for
}//Fin del método
public static void mostrarContainers (){
Iterator itrContainers = containers.iterator();
while(itrContainers.hasNext()){
Containers aux = itrContainers.next();
System.out.println(aux.getNombre()+ ” ”
+ aux.getPuertoCarga() + “-”
+ aux.getPuertoDescarga() + ” ”
+ aux.getPeso() + ” ”
+ aux.getTipo());
}
}
}//Fin de la clase principal
Resulta que cuando ejecuto el programa me da el número exacto de los containers cargados, pero si cargué digamos 5 containers, me imprime por pantalla el último cargado 5 veces seguidas y no 1 vez cada uno!!!
Perdón por la extensión, pero me vendría genial que puedan ayudarme con este problemita!
Desde ya muchísimas gracias!
El problema que tienes es que el objeto aux del tipo Containers en el ArrayList es referenciado (referenciado es que apunta al objeto, no que guarda una copia del mismo). Como solo haces un new Container() antes del for este se guarda la referencia la primera vez en el ArrayList con los datos que le has puesto; la siguiente vez se guarda en el mismo objeto otros datos y se referencia el mismo objeto en otra posición del ArrayList. Hasta aquí tenemos un mismo objeto referenciado dos veces por el ArrayList, por lo que en todas las posiciones del ArrayList obtenemos los mismos datos. La solución, simplemente añade el Containers aux = new Containers(); dentro del for al principio de este para que se cree un nuevo objeto para cada referencia de cada posición del ArrayList.
Otra recomendación, parametriza el ArrayList y el Iterator siempre:
static ArrayList containers = new ArrayList();
Iterator itrContainers = containers.iterator();
Tengo 4 arrayList :
String datos=””;
private ArrayList concepto = new ArrayList();
private ArrayList persona = new ArrayList();
private ArrayList pago = new ArrayList();
private ArrayList Concatenacion_concepto = new ArrayList();
/*
La variable concepto es para el eje x
La variable persona es para el eje y
Y la variable pago es aquella en donde algunas personas pagaron ciertas cuentas.
Uso el siguiente proceso para comparación:
*/
for (int y = 0; y < persona.size(); y++) {
datos =persona.get(y).getNombre() + ";"
+ persona.get(y).getCve_persona () + ";"
+ persona.get(y).getStatus();
for (int x = 0; x < concepto.size(); x++) {
if ((concepto.get(x).getCve_concepto() == adeudo.get(x).getCve_concepto())) {
if ((persona.get(y).getCve_persona() == adeudo.get(x).getCve_cliente())) {
datos += "; X ";
}
} else {
datos += "; O ";
}
}
Concatenacion_concepto.add(datos);
}
/*
El problema que tengo que al momento de comparar datos, me marca el siguiente error:
java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
y no tengo idea de cómo compararlo ¿alguna sugerencia?
Saludos
*/
el problema que indicas es porque intentas acceder a una posición del índice del ArrayList que no existe (comprueba que los for no se pasen de los elementos que tengas almacenados en los ArrayList). De todas maneras, para recorrer ArrayList recomendamos mejor usar Iterator.
int validar = 0;
for (int y = 0; y < persona.size(); y++) {
datos = persona.get(y).getNombre() + ";"
+ persona.get(y).getCve_perosna() + ";"
+ persona.get(y).getStatus();
for (int x = 0; x < concepto.size(); x++) {
for (int z = 0; z < adeudo.size(); z++) {
if ((adeudo.get(z).getCve_cliente() == persona.get(y).getCve_persona()) && (adeudo.get(z).getCve_concepto() == concepto.get(x).getCve_concepto())) {
validar = 1;
}
}
if (validar == 1) {
datos += ";X";
} else {
datos += "; ";
}
validar = 0;
}
Concatenacion_concepto.add(datos);
datos = "";
y ya con esto me trae lo que necesito de información, de todas forma muchas gracias