Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Lind L. Tailor

#11
Java / Println en cmd desde .jar
29 Abril 2015, 18:21 PM
Hola...

Como están compañeros programadores, espero que tengan un excelente día, el motivo de mi tema es que ando batallando con algo que según a mi consideración no debería tener problema alguno, caso contrario, por favor de corregirme...

Tengo dos archivos .jar en donde uno de ellos manda a llamar al otro, además de contener tanto en uno como el otro un simple System.out.println(), tal y como pueden ver en el siguiente código.

Hola.jar
Código (java) [Seleccionar]
import java.io.IOException;

public class ImprimirHola {
   
   public static void main(String[] args) {
       System.out.println("HOLA");
       try {
           Runtime.getRuntime().exec("java -jar C:\\Mundo.jar");
       } catch (IOException e) {
           e.printStackTrace();
       }
   }
}


Mundo.jar
Código (java) [Seleccionar]
public class ImprimirMundo {
   public static void main(String[] args) {    
       System.out.println("MUNDO");
   }
}


Sin embargo, cuando ejecuto el primer archivo el cual manda a llamar el siguiente debería ver en consola o por lo menos eso pienso...

HOLA
MUNDO

Cosa que no me realiza ya que solo veo en consola HOLA, prácticamente el archivo que estoy ejecutando en ese momento desde CMD, mi pregunta es... ¿Cual es la forma correcta de hacerlo?

De antemano, muchas gracias por su tiempo y pronta respuesta.

Sin mas que comentar, que tengan un excelente día.
#12
Java / Re: [School]Ejercicios POO en Java
28 Abril 2015, 17:33 PM
Hola...

Lo que pasa es que después de ingresar un nuevo usuario lo mando directamente al inicio de sesión ;D, pero si tienes razón, sería mas correcto en cuanto a funcionalidad mandarlo al menú nuevamente, así como validar primeramente el usuario y posteriormente la contraseña.

Estamos al pendiente de las nuevas actividades mientras arreglo esa parte.  :rolleyes:
#13
Java / Re: [School]Ejercicios POO en Java
28 Abril 2015, 06:42 AM
Hola...

Pues yo hice esto, no estoy seguro si esta correcto pero eh realizado el intento con lo que se hasta el momento de este lenguaje maravilloso lenguaje de programación...

EscuelaMain.java
Código (java) [Seleccionar]

package com.escuela.main;

import com.escuela.persistence.SistemaUsuarios;

public class SistemaEscolarMain {
public static void main(String[] args) {
new SistemaUsuarios();
}
}


SistemaUsuario.java
Código (javascript) [Seleccionar]

package com.escuela.persistence;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import com.escuela.dto.Usuario;

public class SistemaUsuarios {
List<Usuario> listaUsuario = new ArrayList<Usuario>();

public SistemaUsuarios() {
Usuario usuario = null;

Scanner scan = new Scanner (System.in);
Scanner sesion = new Scanner (System.in);

// Menu
System.out.println("**********Menu del Sistema Escolar (El Hacker)************");
System.out.println("*                                                        *");
System.out.println("* 1.- Crear nuevo usuario.                               *");
System.out.println("* 2.- Iniciar sesion.                                    *");
System.out.println("* 3.- Salir                                              *");
System.out.println("*                                                        *");
System.out.println("**********************************************************");

// Captura del dato de entrada por parte del usuario
System.out.print("\n¡Bienvenido!... ¿Cual es tu actividad a realizar?: ");
String opcion = scan.next();
while (opcion != null){
if (opcion.equals("1")){
System.out.print("\nNombre de usuario: ");
String nombre = scan.next();
System.out.print("Password de usuario: ");
String password = scan.next();
usuario = new Usuario(nombre,password);
listaUsuario.add(usuario);
System.out.println("\nUsuario registrado correctamente.");
opcion = "2";
} else if (opcion.equals("2")) {
System.out.print("\nEscriba su nombre: ");
String user = sesion.next();
System.out.print("Escriba su password: ");
String pass = sesion.next();
if (user != null){
if (validarUsuario(user,pass)){
break;
}
}
} else if (opcion.equals("3")) {
System.out.println("\nAplicacion terminada correctamente.");
break;
} else {
System.out.print("\nOpcion no disponible en el menu, vuelva a intentar: ");
opcion = scan.next();
}
}
}

private boolean validarUsuario(String user, String pass) {
boolean existe = false;
for(Usuario i : listaUsuario){
if (i.getUsuario().equals(user) && i.getPassword().equals(pass)){
System.out.println("\nSesion iniciada correctamente.");
existe = true;
} else {
System.out.println("\nError de credenciales.");
}
}
return existe;
}
}


Usuario.java
Código (java) [Seleccionar]

package com.escuela.dto;

public class Usuario {
private String usuario;
private String password;

public Usuario(String usuario, String password) {
this.usuario = usuario;
this.password = password;
}

public String getUsuario() {
return usuario;
}

public void setUsuario(String usuario) {
this.usuario = usuario;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}
}


Por favor, siéntanse libres de corregirme o bien, darme algunos tips para la optimización de mi código.

P.D. Siento que deberías dar un poco mas de tiempo antes de colocar tu código personal, o por lo menos eso es mi punto de vista.
#14
Java / Re: Array Bidimensional de objetos
19 Abril 2015, 22:06 PM
Efectivamente, por favor, coloca el código con tus adecuaciones para ver el error, sin embargo, por lo que comentas posiblemente tienes esa línea de código en un bucle y si se repite el ID posiblemente es que no estas creando un nuevo objeto cuando insertas un nuevo registro.

Sin mas que comentar, cualquier duda y/o inconveniente, aquí estamos. Suerte!
#15
Java / Re: Array Bidimensional de objetos
16 Abril 2015, 04:37 AM
Hola...

Pues eso no le veo problema, solo que tendríamos que cambiar la Interface a implementar...

PojoA
Código (java) [Seleccionar]

public class PojoA {
private int id;
private String Campo1;
private String Campo2;
private String Campo3;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getCampo1() {
return Campo1;
}

public void setCampo1(String campo1) {
Campo1 = campo1;
}

public String getCampo2() {
return Campo2;
}

public void setCampo2(String campo2) {
Campo2 = campo2;
}

public String getCampo3() {
return Campo3;
}

public void setCampo3(String campo3) {
Campo3 = campo3;
}
}


Main
Código (java) [Seleccionar]

public class ClaseMain {
public static void main(String[] args) {
Random  rnd = new Random();
int id = rnd.nextInt(3)+1;
int size = llenarHashMap().size();
int total = 0;
System.out.println("Id: " + llenarHashMap().get(id).getId() +
" Nombre: " + llenarHashMap().get(id).getCampo1() +
" Apellido: " + llenarHashMap().get(id).getCampo2() +
" Anime: " + llenarHashMap().get(id).getCampo3());

for(int i = 1; i <= size; i++){
total += llenarHashMap().get(i).getId();
}

System.out.println("TOTAL: " + total);
}

public static HashMap<Integer,PojoA> llenarHashMap(){
HashMap<Integer,PojoA> map = new LinkedHashMap<Integer,PojoA>();
PojoA a = new PojoA();
a.setId(1);
a.setCampo1("Yuno");
                a.setCampo2("Gasai");
                a.setCampo3("Mirai Nikki");
map.put(a.getId(),a);

a = new PojoA();
a.setId(2);
a.setCampo1("Asuna");
                a.setCampo2("Yuuki");
                a.setCampo3("Sword Art Online");
map.put(a.getId(),a);

a = new PojoA();
a.setId(3);
a.setCampo1("Hinata");
                a.setCampo2("Hyuga");
                a.setCampo3("Naruto");
map.put(a.getId(),a);

return map;
}
}


Como podemos observar, en vez de implementar la Interface List cambiamos a un HashMap que a su vez hereda de la clase Map siendo esta la clase padre, sin embargo, eh leído que HashMap tiene un poco mas de rapidez cuando se trata de gran cantidad de datos, aunque sigo buscando una diferencia que me convenza. Cabe mencionar que la característica importante que tiene nuestro elemento en particular es que se caracteriza por su estructura; HashMap (K,V), donde K significa nuestro identificador (Key) que tendrá V (value) que viene siendo el valor correspondiente a ese Key. Para mayor información te invito a consultar la API de Java para que puedas comprender con mejor claridad.

También realice un cambio a nuestro objeto ya que agregue un campo mas el cual es el identificador (Id) como podrás ver en la clase PojoA, además realice un cambio a nuestro método el cual me retornara un HashMap<Integer,PojoA>, esto significa que como Key le declaro un entero y como valor le declaro un objeto. Posteriormente llenamos el K y el V correspondiente como puedes ver en el código.

Finalmente, solo es cuestión de generar un numero aleatorio entre 1 al 3, la razón de sumarle un 1 al final es porque sino nos genera números del 0 al 2. Pasamos a imprimir el valor correspondiente de acuerdo al numero que el HashMap identificara como Key. Como ya lo que tiene V es un objeto lleno, entonces puedo acceder a los valores de el mediante los métodos Get.

Para tu problema de la suma, yo estoy sumando el ID pero obviamente tu sumarías el valor que tengas que sumar, el proceso es simple ya que como puedes ver es simplemente un bucle for y acceder a los valores que tiene el campo que voy a sumar de acuerdo al K que le voy a pasar.

Cualquier duda y/o inconveniente, aquí estamos. Suerte!
#16
Java / Re: Array Bidimensional de objetos
15 Abril 2015, 23:36 PM
Hola...

Por lo que entendí necesitas crear una simple lista de objetos, si ese es el caso puedo ayudarte con un código sencillo pero útil, solo tendrías que adecuarlo a tus necesidades...

Objeto.
Código (java) [Seleccionar]

public class PojoA {
private String Campo1;
private String Campo2;
private String Campo3;

public String getCampo1() {
return Campo1;
}

public void setCampo1(String campo1) {
Campo1 = campo1;
}

public String getCampo2() {
return Campo2;
}

public void setCampo2(String campo2) {
Campo2 = campo2;
}

public String getCampo3() {
return Campo3;
}

public void setCampo3(String campo3) {
Campo3 = campo3;
}
}


Main.
Código (java) [Seleccionar]

public class ClaseMain {
public static void main(String[] args) {
for (PojoA i : llenarLista()){
            System.out.println("NOMBRE: " + i.getCampo1() + " APELLIDO: " + i.getCampo2() + " ANIME: " + i.getCampo3());
        }
}

public static List<PojoA> llenarLista(){
List<PojoA> list = new ArrayList<PojoA>();
PojoA a = new PojoA();
a.setCampo1("Yuno");
        a.setCampo2("Gasai");
        a.setCampo3("Mirai Nikki");
        list.add(a);
       
        a = new PojoA();
        a.setCampo1("Asuna");
        a.setCampo2("Yuuki");
        a.setCampo3("Sword Art Online");
        list.add(a);
       
        a = new PojoA();
        a.setCampo1("Hinata");
        a.setCampo2("Hyuga");
        a.setCampo3("Naruto");
        list.add(a);
       
        return list;
}
}


Primeramente lo que hacemos es crear una clase el cual contendrá todos los campos que necesitemos, para este ejemplo los eh declarado del tipo String pero tu puedes declararlos de acuerdo a tus necesidades, para cada campo creamos sus respectivos métodos Set/Get los cuales son los métodos encargados de manipular el contenido que tendrá el campo, todo esto lo podrás ver en la clase PojoA.

Posteriormente hice un método el cual me retornara una lista del tipo PojoA, dentro del método instanciamos a mi objeto para ir colocando los valores a través de los métodos Set cuando termino de colocar los valores a los campos los agrego a una lista, instancio un nuevo objeto para volver a llenar con valores nuevos ya que sino el valor sera el mismo para todos, el proceso se repite una vez mas con el fin de tener dentro de mi objeto 3 registros en total.

Finalmente retorno la lista y al ejecutar mi proyecto, recorro la lista de acuerdo al tipo de objeto al que pertenece; es decir, no puedo recorrer una lista de objetos del tipo PojoB cuando mi lista es del tipo PojoA, e imprimo los valores a través de los métodos Get.

Cualquier duda y/o inconveniente, aquí estamos. Suerte!
#17
Hola...

No estoy muy seguro de donde hayas buscado, o más bien, como lo hayas buscado pero ahorita que leí que no había un tutorial decente y sobre todo en Ingles, me dedique a buscar un poco el tema y valla sorpresa que me encontré...

1.- A mi punto de vista, a pesar de no mostrar imágenes de ejemplo correctamente, lo respalda su explicación.

http://thecodinguniverse.com/lwjgl-tutorials/

2.- Como siempre stackoverflow salvando el tema, y no solamente con un enlace web de ayuda.

http://stackoverflow.com/questions/10126555/lwjgl-tutorials
#18
Como estan, amigos!

Bueno, simplemente para cerrar el tema, ya que encontré como obtener lo que quería, ahora solo es cuestión de manipular esa colección de archivos de texto, sin mas que comentar gracias por su tiempo.

P.D. Si están interesados en saber como lo resolví, contáctenme y con gusto brindo el código.
#19
Que tal amigos, soy nuevo en el foro y aquí vengo con un nuevo tema para ustedes, espero puedan apoyarme, como dice el título del tema, tengo un pequeño inconveniente con las hojas de estilo XSL, soy nuevo con las plantillas y no estoy seguro si estoy realizando las cosas correctamente.

Tengo una carpeta con archivos de texto como se muestra a continuación.

descarga1.txt
descarga2.txt
descarga3.txt
...

Dichos archivos se necesitan convertir a un archivo XML, el cual realizo correctamente con la implementación del código siguiente.

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" />

<xsl:variable name="text" select="tokenize(unparsed-text('file:///C:/Users/Quality/Documents/ProyectoComerciales/download_files/descarga01.txt'),'&#xD;&#xA;')" />

<xsl:template name="main" match="/">
<content>
<items>
<xsl:for-each select="$text">
<xsl:variable name="idi" select="substring(.,1,2)" />
<xsl:if test="$idi = 'OH'">
<item>
<xsl:element name="id"><xsl:value-of select="$idi" /></xsl:element>
<xsl:element name="folio"><xsl:value-of select="substring(.,3,10)" /></xsl:element>
</item>
</xsl:if>
</xsl:for-each>
</items>
<products>
<xsl:for-each select="$text">
<xsl:variable name="idp" select="substring(.,1,2)" />
<xsl:if test="$idp = 'BL'">
<product>
<xsl:element name="id"><xsl:value-of select="$idp" /></xsl:element>
<xsl:element name="code"><xsl:value-of select="substring(.,3,18)" /></xsl:element>
</product>
</xsl:if>
</xsl:for-each>
</products>
<users>
<xsl:for-each select="$text">
<xsl:variable name="idu" select="substring(.,1,2)" />
<xsl:if test="$idu = 'LH'">
<user>
<xsl:element name="id"><xsl:value-of select="$idu" /></xsl:element>
<xsl:element name="num"><xsl:value-of select="substring(.,3,6)" /></xsl:element>
</user>
</xsl:if>
</xsl:for-each>
</users>
</content>
</xsl:template>
</xsl:stylesheet>

Si realizamos la llamada desde Java a este archivo tendremos una conversión exitosa, sin embargo, como podrán ver en la tercera línea del código se puede observar que yo le estoy diciendo que archivo quiero que lea, por lo tanto ahí es donde viene mi problema. Necesito que lea todos los archivos que se encuentran dentro de mi carpeta y valla creando un XML por cada archivo que va leyendo, investigue en Internet que puedo implementar la función collection() que el mismo XSL tiene, por lo que quedaría de la siguiente manera.

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>

<xsl:template name="main" match="/">
<xsl:for-each select="collection('file:///C:/Users/Quality/Documents/ProyectoComerciales/download_files/?select=*.txt')">
<xsl:variable name="file" select="tokenize(document-uri(.),'/')[last()]"/>
<xsl:variable name="text" select="tokenize(unparsed-text($file),'&#xD;&#xA;')"/>
<xsl:for-each select="$text">
<content>
...
</content>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

Sin embargo, cuando realizo la ejecución obtengo el siguiente mensaje de error "el contenido no está permitido en el prólogo". La llamada desde Java la realizo mediante el uso del siguiente código Saxon (saxon9he.jar)

try {
Processor proc = new Processor(false);
XsltCompiler comp = proc.newXsltCompiler();
XsltExecutable exp = comp.compile(new StreamSource(new File("C:/Users/Quality/Documents/" +
"ProyectoComerciales/xsl/convertir.xsl")));
Serializer out = new Serializer();
out.setOutputProperty(Serializer.Property.METHOD, "xml");
out.setOutputProperty(Serializer.Property.INDENT, "yes");
out.setOutputFile(new File("C:/Users/Quality/Documents/ProyectoComerciales/xml/descarga.xml"));
XsltTransformer trans = exp.load();
trans.setInitialTemplate(new QName("main"));
trans.setDestination(out);
trans.transform();
} catch (SaxonApiException sae) {
sae.printStackTrace();
}

Serían tan amables de apoyarme con este tema, de antemano, gracias por su tiempo.
#20
Hola, amigos!!!

Tengo el siguiente archivo de texto (.txt)

IT000000000000000545Panquecitos 2 100gr BIM OLA
IT000000000000000797Dalmata 45g MLA
IT000000000000001782Quequito max 80g Arrorico BIM

Eh conseguido leer el archivo mediante el uso de plantillas XSLT, y obtener como salida un archivo XML, sin embargo, mi codigo me lee unicamente la primera fila, y necesito leer todo el archivo, para obtener algo similar a esto:

<items>
   <item>
      <nick>IT</nick>
      <num>000000000000000545</nick>
      <desc>Panquecitos 2 100gr BIM OLA</nick>
   </item>
   <item>
      <nick>IT</nick>
      <num>000000000000000797</nick>
      <desc>Dalmata 45g MLA</nick>
   </item>
   ...
</items>

Podrian ayudarme, por favor, este es mi codigo para leer el archivo...

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:variable name="vText" select="replace(unparsed-text('file:///C:/Users/Quality/Desktop/test.txt'),'\r','')"/>
<xsl:template name="main" match="/">
<items>
<xsl:for-each select="$vText">
   <item>
         <xsl:element name="nick"><xsl:value-of select="substring($vText,1,2)"></xsl:value-of></xsl:element>
         <xsl:element name="num"><xsl:value-of select="substring($vText,3,18)"/></xsl:element>
         <xsl:element name="desc"><xsl:value-of select="substring($vText,21,40)"/></xsl:element>
   </item>
</xsl:for-each>
</items>
</xsl:template>
</xsl:stylesheet>

De antemano, gracias por su ayuda.