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 - Usuario Invitado

#251
Java / Re: Ayuda con algoritmo en java
30 Marzo 2015, 18:39 PM
Jaja, si lo manda el profe, pues a hacerlo (aunque a veces se equivoquen :xD).
#252
Integer() transforma un número en formato texto a un entero (Integer es entero en español). Dado que gets.chomp es la entrada de datos por teclado de Ruby, ésta solo acepta textos, por ello, cuando se ingresan números en realidad se ingresa un texto que tiene un número y debe de convertirse a número (entero o real).  Por otro lado, return no almacena ningún valor. En esos if su uso es innecesario. Se usa return cuando se desea devolver un valor desde una función (def).


Saludos.
#253
Java / Re: Ayuda con algoritmo en java
29 Marzo 2015, 19:35 PM
¿Alguna cuestión en especial para usar Scanner en lugar del API estándar para manejo de archivos?

Código (java) [Seleccionar]
File file = new File("D://prueba/rangos.txt");
try {
Scanner sc = new Scanner(file);
while (sc.hasNextLine()) {
String[] tokens = sc.nextLine().split(" ");
// el mismo proceso
}
sc.close();
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
#254
No te preocupes, suele pasar :xD. En vista que todo está solucionado, por favor marca el tema como solucionado (check verde en tu primer post en la parte superior derecha).

Un saludo.
#255
Java / Re: Ayuda con algoritmo en java
29 Marzo 2015, 18:49 PM
Hola,

Prueba lo siguiente:

Código (java) [Seleccionar]
public Integer getNumberByRange(String directory, String fileName, Integer number) {
Integer numberToReturn = null;
Path path = Paths.get(directory, fileName);
Charset charset = Charset.forName("UTF-8");
try {
// lee todas las lineas del fichero
List<String> lines = Files.readAllLines(path, charset);

Integer temporal = 0;
for (String line : lines) {
// divide la linea separando por espacios
String[] tokens = line.split(" ");
// asumimos solo los dos primeros lugares (rango - numero a devolver)
Integer range = Integer.parseInt(tokens[0]);
if(number > temporal && number < range)
numberToReturn = Integer.parseInt(tokens[1]);
temporal = range,
}
} catch (IOException e) {
logger.warning(e.getMessage());
} catch (NumberFormatExceptio e2) {
logger.warning(e2.getMessage());
}

return numberToReturn;
}


Donde temporal es el número anterior. Itera rango por rango, verifica que el número ingresado sea mayor a temporal (número anterior) y que sea menor al rango, si es así, guarda el número a devolver. Finalmente, lo retorna.

Llamas al método así:

Código (java) [Seleccionar]
objeto.getNumberByRange("D://prueba", "rangos.txt", 2580);


Saludos.
#256
Java / Re: Crud con Strut2 e hibernate
29 Marzo 2015, 18:34 PM
Hola,

Código (java) [Seleccionar]
session.createSQLQuery("select c.CatNoca, c.CatNom, t.CatNoca, t.TraNoca, t.CatNom, t.tradat  from Trama t INNER JOIN Categoria c ON t.CatNoca="+entity);

Donde dice:

Código (java) [Seleccionar]
t.CatNoca="+entity

entity, se supe que es una entidad (T), y CatNoca es de tipo integer en la tabla, por lo que ¿cómo puedes compararlos?

Por otra parte, si usas Hibernate, puedes aprovecharlo para obtener los datos con NamedQueries:

Código (java) [Seleccionar]
@NamedQuery(name = "cat", query = "SELECT c.catNoca, c.catNom " +
", t.catNoca, t.traNoca, t.catNom, t.tradat "+
    "FROM Trama t, Category c " +
    "JOIN t.catNoca = :cat")

   
Y la llamarías así:

Código (java) [Seleccionar]
TypedQuery<Organization> q = em.createNamedQuery("query", Organization.class);
q.setParameter("cat", 1); // aquí le pones el numero de categoria que deseas


La ventaja es que "cat" lo puedes asignar en tiempo de ejecución, por lo que es mucho más flexible. Por cierrto, usa JPA, es muy sencillo.

NOTA: En los NamedQuery, se usan en lugar del nombre de la tabla, el nombre de la entidad y en lugar de los nombres de las columnas, las propiedades de la entidad.


Saludos.
#257
Java / Re: Ayuda Matrices Dispersas
29 Marzo 2015, 18:13 PM
Ahora cambia la cosa xD, ¿ya ves la importancia de hacer un código limpio? Imagina tener que explicar en un documento todo lo que hace tu clase, cuando modularizando y tomando buenas prácticas, tan solo con leer el código entiendes qué es lo que hace.

Un saludo y gracias por compartir, seguro a alguien le servirá ;)
#258
Java / Re: Ayuda Matrices Dispersas
29 Marzo 2015, 17:47 PM
Hola,

Citar¿Porque ilegible?

¿Qué significa ésto?

Código (java) [Seleccionar]
public void Sumar(int B[][]){
       int i = 1;
       int[][] R;
       if((Mat[0][0] == B[0][0]) && (Mat[0][1] == B[0][1])){
           R = new int[Mat[0][0]][Mat[0][1]];
           while((i <= B[0][2]+1)&&(i <= Mat[0][2]+1)){
               if((B[i][0] == Mat[i][0]) && (B[i][1] == Mat[i][1])){
                   R[i][0] = Mat[i][0];
                   R[i][1] = Mat[i][1];
                   R[i][2] = Mat[i][2] + B[i][2];
                   if(R[i][2] == 0){
                       //eliminar
                       //redimensionar
                   }
                   i =i + 1;
                   
               }
               else{
                  R[i][0] = Mat[i][0];
                  R[i][1] = Mat[i][1];
                  R[i][2] = Mat[i][2];
                  i =i + 1;
               }
           }
       }
   }


Para tí, tiene un significado fácil de comprender, porque tú lo has escrito, pero si otro programador viene y lee ese código, no entenderá un carajo (al menos en primera instancia).

¿Qué es R?
¿Qué es B?
¿Qué hace el if?
¿Qué hace el while?

Java es un lenguaje orientado a objetos y debe de aprovecharse esa característica. Lo que tienes que hacer, es modularizar. Dividir un código extenso y difícil de mantener en clases y métodos, de manera que todos interactúen entre sí para dar con la solución de una manera ordenada.

Alternativamente, si vas a realizar un código así, te recomiendo comentar mucho tu código, cosa que por un lado, no es tan bueno. Por último, las variables en Java comienzan con minúscula y además, según las buenas prácticas dadas por Sun/Oracle, nos dice que debemos de darle nombres descriptivos a las variables/objetos que usemos, de manera, que con tan solo ver el nombre sepamos qué es lo que hace o para qué está allí.


Saludos.
#259
Yo lo haría con Groovy usando Grails (framework) y para la UI utilizaría Vaadin, si quiero algo rápido y bonito.

  • Groovy,Java o Scala.
  • Grails Framework o Spring MVC si se usa Java.
  • PostgreSQL o MariaDB como SGBD.
  • Enterprise Architect o Visual Paradigm para el análisis y diseño.
  • Muchísimo tiempo y exageradamente alta paciencia (por la cantidad de quebraderos de cabeza de la que serás objeto).

    Otra alternativa sería Ruby y RoR. Con eso creo que puedes crear una red social no tan inmensa como FB, pero algo decente podrás hacer si tienes el nivel que requiere el proyecto. Si vas a hacerlo solo, necesitas (lo que veo ahora):

  • Conocimientos  de análisis de sistemas: Recopilación de información, diagrama de casos de uso, diagrama de entidades, diagrama de clases.
  • Conocimientos de diseño de sistemas: Importante, diagramas de secuencia (se generan a partir del análisis y el diagrama de clases), diagramas de actividad, diseño de interfaces.
  • Conocimientos amplios sobre: Escalabilidad, patrones de diseño, acoplación entre clases, principios de desarrollo de sotware, modelos de desarrollo.
  • Conocimientos sobre BBDD: Disparadores, procedimientos almacenados, normalización, etc.
  • Conocimientos sobre TDD (test drive development): Herramientas de tests unitarios (JUnit por ejemplo).


    En fin, es una ardua tarea. Estimo que necesitarás entre 6 meses y 1 año para que termines solamente el core. ¡Suerte!
#260
Como aclaración cabe decir que en la mayoría de lenguajes de programación (si no es en todos) los arrays van desde la posición 0 hasta N- 1, donde N es el número de elementos del array. Normalmente en el for se recorre un array así:

Código (java) [Seleccionar]
for(int index=0; index<array.length; index++) {}

Respecto a tu otra pregunta, pues en realidad no hay mucho que pensar. Declara una variable e inicializala en null, luego en el for le asignas un valor si cumple una determinada condición y fuera del for retornas la variable.

Código (java) [Seleccionar]
public Integer getValue(int[] values) {
   Integer value = values[0];

   for(int index=0; index<values.length; index++) {
       if(values[i] > value)
           value = values[i];
   }

   return value;
}


Por ejemplo, la función anterior devuelve el numero mayor de un array de numeros.

Saludos.