Mostrar Mensajes

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


Mensajes - luispdl

Páginas: [1]
1
Buenas, necesito que me ayuden con un algoritmo que no le puedo encontrar la vuelta. Tengo un json de categorias, donde tiene como atributos el id, el nombre y el padre.

Necesito armar otro json pero con los datos en forma de arbol. Pero la cuestion es que tendria q ser algo recursivo supongo, xq yo no se cuantos niveles de profundidad va a tener el arbol. Le muestro el json que tengo y pongo un ejemplo de lo q quisiera obtener.


El json que tengo


Código: [Seleccionar]
[{"id":1384417,"nombre":"HERRAMIENTAS EL\u00c9CTRICAS","padre":0},
{"id":1384418,"nombre":"Amoladoras","padre":1384417},
{"id":1384419,"nombre":"Aspiradoras\/Sopladores de Hojas","padre":1384417},
{"id":1384420,"nombre":"Atornilladores","padre":1384417},
{"id":1384423,"nombre":"Cepillos","padre":1384417},
{"id":1384424,"nombre":"Cortacercos","padre":1384417},
{"id":1384425,"nombre":"Electrosierras","padre":1384417},
{"id":1384444,"nombre":"Estaci\u00f3n de Inflado","padre":1384417},
{"id":1384445,"nombre":"Herramientas Estacionarias","padre":1384417},
{"id":1384446,"nombre":"Taladros de Banco","padre":1384445},
{"id":1384447,"nombre":"Sierras Ingleteadoras","padre":1384445},
{"id":1384448,"nombre":"Sierras de Banco","padre":1384445},
{"id":1384449,"nombre":"Lijadoras","padre":1384417},
{"id":1384450,"nombre":"De Banda","padre":1384449},
{"id":1384451,"nombre":"Orbitales","padre":1384449},
{"id":1384452,"nombre":"Llaves de Impacto","padre":1384417},
{"id":1384453,"nombre":"Martillos","padre":1384417},
{"id":1384454,"nombre":"Con Rotaci\u00f3n","padre":1384453},
{"id":1384455,"nombre":"Sin Rotaci\u00f3n","padre":1384453},
{"id":1384456,"nombre":"Pistolas de Calor","padre":1384417},
{"id":1384457,"nombre":"Pulidoras","padre":1384417},
{"id":1384458,"nombre":"Routers","padre":1384417},
{"id":1384459,"nombre":"Sierras","padre":1384417},
{"id":1384460,"nombre":"Taladros","padre":1384417},
{"id":1384461,"nombre":"Con Percusi\u00f3n","padre":1384460},
{"id":1384462,"nombre":"Sin percusi\u00f3n","padre":1384460},
{"id":1384464,"nombre":"Tornos Manuales","padre":1384417},
{"id":1508300,"nombre":"HERRAMIENTAS A BATER\u00cdA","padre":0},
{"id":1508315,"nombre":"Atornilladores","padre":1508300},
{"id":1384463,"nombre":"Taladros","padre":1508300},
{"id":1384426,"nombre":"HERRAMIENTAS A EXPLOSI\u00d3N","padre":0},
{"id":1384465,"nombre":"Desmalezadoras","padre":1384426},
{"id":1384466,"nombre":"Grupos Electr\u00f3genos","padre":1384426},
{"id":1384467,"nombre":"Motosierras","padre":1384426},
{"id":1384427,"nombre":"HIDROLAVADORAS EL\u00c9CTRICAS","padre":0},
{"id":1384471,"nombre":"NIVELES L\u00c1SER","padre":0},
{"id":1384472,"nombre":"LINTERNAS RECARGABLES","padre":0},
{"id":1384428,"nombre":"ACCESORIOS Y ELECTR\u00d3NICOS","padre":0},
{"id":1384468,"nombre":"Bater\u00edas","padre":1384428},
{"id":1384469,"nombre":"Cargadores de Bater\u00eda","padre":1384428},
{"id":1384470,"nombre":"Conservadoras","padre":1384428},
{"id":1384473,"nombre":"Para Compresores","padre":1384428}]


Y yo quisiera obtener algo asi.

Código: [Seleccionar]
[{"id":1384417,"nombre":"HERRAMIENTAS EL\u00c9CTRICAS","padre":0,
        "hijos":[{"id":1384418,"nombre":"Amoladoras","padre":1384417}
                     ,{"id":1384419,"nombre":"Aspiradoras","padre":1384417}
                     ,{"id":1384420,"nombre":"Atornilladores","padre":1384417}]}
,{"id":1384471,"nombre":"NIVELES L\u00c1SER","padre":0}]

El lenguaje en el cual me puedan ayudar me es indiferente, yo lo haria con javascript o php, pero da lo mismo.

Espero que se entienda y me puedan ayudar. Muchas Gracias

3
La clase principal con el metodo main
Código: [Seleccionar]
public class Comparacion {
    public static void main (String [] args ) {
        System.out.print("Ingrese una cadena: ");
        EntradaDeTeclado entrada1 = new EntradaDeTeclado();
        System.out.print("Ingrese otra cadena: ");
        EntradaDeTeclado entrada2 = new EntradaDeTeclado();
        String cadena1= entrada1.getEntrada();
        String cadena2= entrada2.getEntrada();
        if (cadena1.length()>cadena2.length()) {
            int j=0;
            for (int i=0; i<cadena1.length();i++) {
                if (j<cadena2.length()){
                    System.out.println("¿Letra " + (i+1)+" igual en las dos palabras? "+ cadena1.substring(i, i+1).equals(cadena2.substring(i, i+1)));
                    j++;
                } else {
                    System.out.println("¿Letra " + (i+1)+" igual en las dos palabras? La palabra 2 no tiene letra "+(i+1) );
                    j++;
                }
            }
        } else {
            int j=0;
            for (int i=0; i<cadena2.length();i++) {
                if (j<cadena1.length()){
                    System.out.println("¿Letra " + (i+1)+" igual en las dos palabras? "+ cadena1.substring(i, i+1).equals(cadena2.substring(i, i+1)));
                    j++;
                } else {
                    System.out.println("¿Letra " + (i+1)+" igual en las dos palabras? La palabra 1 no tiene letra "+(i+1) );
                    j++;
                }
            }
        }
    }
}


Clase del capitulo anterior para entrada por teclado
Código: [Seleccionar]
import java.util.Scanner;

public class EntradaDeTeclado {
    private String entradaTeclado;
   
    public EntradaDeTeclado() {
        entradaTeclado="";
        pedirEntrada();
    }
   
    public void pedirEntrada() {
        Scanner entradaEscaner = new Scanner (System.in);
        entradaTeclado= entradaEscaner.nextLine();
    }
   
    public String getEntrada () {
        return entradaTeclado;
    }
   
    public String getPrimeraPalabra () {
        for (int i=0;i<entradaTeclado.length()-1;i++) {
            if (entradaTeclado.substring(i, i+1).equals(" ")) {
                return entradaTeclado.substring(0, i+1);
            }
        }
        return entradaTeclado;
    }
   
    public int getLongitud () {
        return entradaTeclado.length();
    }
   
}

4
Muchas Gracias!!!

5
Me acabo de dar cuenta que eso va a tener un problema si el nro que quiero sumar es de 2 o mas números. Cambiarle el tipo de variable de num, q en vez de ser carácter sea cadena de texto.

6
uff, nunca vi el PSeInt. Me lo baje para ver si te podía ayudar.
 En principio el problema es que vos tenes q sumar enteros hasta que ingresen un carácter, entonces si lo guardas en la misma variable cuando ingreses un carácter y lo quieras guardas en una variable de tipo entero te va a dar error, y si quieres sumar variables de tipo carácter va a dar error en la operación.

Entonces googleando un poco vi que había una función que convertía un carácter o cadena de texto a entero "ConvertiraNumero()". Con esa funcion se puede solucionar muchas cosas.

Me parece que lo mejor es hacerlo con un mientras. Pero como lo hiciste vos en ultima instancia. podes poner algo asi.
Código: [Seleccionar]
Proceso Secuencia
Definir num Como caracter
Definir a1,N Como entero
a1=0
Repetir
escribir "Ingresa el numero"
leer num
Si num="f" o num="F"
Escribir "fin de la suma"
Sino
n=ConvertirANumero(num)
a1=a1+n
FinSi
Hasta Que num="f" o num="F"
Escribir "la suma es :", a1

FinProceso

7
Pusiste esto:
Código: [Seleccionar]
//Esta clase representa un taxi. -- > Comentario general que puede incluir: cometido, autor, versión, etc…
public class Taxi { //El nombre de la clase
private String ciudad; //Ciudad de cada objeto taxi
private String matricula; //Matrícula de cada objeto taxi
private String distrito; //Distrito asignado a cada objeto taxi
private int tipoMotor; //tipo de motor asignado a cada objeto taxi. 0=desconocido, 1 = gasolina, 2 = diesel
arriba de todo eso

8
Ahí pongo la resolución de este ejercicio, a ver si me lo corrigen.
Clase SalonCasa
Código: [Seleccionar]
public class SalonCasa {
    int numeroDeTelevisores;
    String tipoSalon;
   
    public SalonCasa() {
        numeroDeTelevisores = 0;
        tipoSalon = "Desconocido";
    }
   
    public void setNumeroDeTelevisores(int valorNumeroDeTelevisores) {
        numeroDeTelevisores = valorNumeroDeTelevisores;
    }
   
    public void setTipoSalon(String valorTipoSalon) {
        tipoSalon = valorTipoSalon;
    }
   
    public int getNumeroDeTelevisores() {
        return numeroDeTelevisores;
    }
   
    public String getTipoSalon () {
        return tipoSalon;
    }
   
   
}

Clase CocinaCasa
Código: [Seleccionar]
public class CocinaCasa {
    boolean esIndependiente;
    int numeroDeFuegos;
   
    public CocinaCasa () {
        esIndependiente= false;
        numeroDeFuegos = 0;
    }
   
    public void setEsIndependiente (boolean valorEsIndependiente) {
        esIndependiente = valorEsIndependiente;
    }
   
    public void setNumeroDeFuegos(int valorNumeroDeFuegos) {
        numeroDeFuegos = valorNumeroDeFuegos;
    }
   
    public boolean getEsIndependiente () {
        return esIndependiente;
    }
   
    public int getNumeroDeFuegos () {
        return numeroDeFuegos;
    }
}

Clase Casa
Código: [Seleccionar]
public class Casa {
    double superficie;
    String direccion;
    private SalonCasa salonCasa;
    private CocinaCasa cocina;
   
    public Casa () {
        superficie = 0.0;
        direccion = "Desconocida";
        salonCasa = new SalonCasa();
        cocina = new CocinaCasa ();
    }
   
    public void setSuperficie (double valorSuperficie) {
        superficie = valorSuperficie;
    }
   
    public void setDireccion (String valorDireccion) {
        direccion = valorDireccion;
    }
   
    public void setSalon (int valorNumeroTelevisores, String valorTipoSalon) {
        salonCasa.setNumeroDeTelevisores(valorNumeroTelevisores);
        salonCasa.setTipoSalon(valorTipoSalon);
    }
   
    public void setCocina(boolean valorEsIndependiente, int valorNumeroFuegos){
        cocina.setEsIndependiente(valorEsIndependiente);
        cocina.setNumeroDeFuegos(valorNumeroFuegos);
    }
   
    public double getSuperficie () {
        return superficie;
    }
   
    public String getDireccion () {
        return direccion;
    }
   
    public SalonCasa getSalon() {
        return salonCasa;
    }
   
    public CocinaCasa getCocina() {
        return cocina;
    }
}

Eso es todo. Muchas Gracias.

9
Muchas gracias por la respuesta, ahí lo corregí.
Después cuando aplique la clase vi que eso iba a estar mal, aunque no supe como ponerlo.
Gracias.

10
Buenas, queria saber si hice bien este ejercicios.
Código: [Seleccionar]
class Medico {
    String nombre;
    String apellido;
    int edad;
    boolean casado;
    String DNI;
    String especialidad;
   
    public Medico(){
        nombre = "";
        apellido = "";
        edad = 0;
        casado = false;
        DNI = "";
        especialidad = "";
    }
   
    public void setNombre( String valorNombre) {
        System.out.println("Ha cambiado el nombre del medico de nombre "+ nombre + apellido + " a "+ valorNombre );
        nombre = valorNombre;
    }
   
    public void setApellido ( String valorApellido) {
        System.out.println("Ha cambiado el apellido del medico de nombre "+ nombre + apellido + " a "+ valorApellido );
        apellido = valorApellido;
    }
   
    public void setEdad (int valorEdad) {
        edad = valorEdad;
        System.out.println("Ha cambiado la edad del medico de nombre "+ nombre + apellido + " a "+ valorEdad );
    }
   
    public void setCasado (boolean valorCasado) {
        casado = valorCasado;
        System.out.println("Ha cambiado el estado de casado del medico de nombre "+ nombre + apellido + " a "+ valorCasado );
    }
   
    public void setDNI (String valorDNI) {
        DNI = valorDNI;
        System.out.println("Ha cambiado el DNI del medico de nombre "+ nombre + apellido + " a "+ valorDNI );
    }
   
    public void setEspecialidad (String valorEspecialidad) {
        especialidad = valorEspecialidad;
        System.out.println("Ha cambiado la especialidad del medico de nombre "+ nombre + apellido + " a "+ valorEspecialidad );
    }
   
    public String getNombre (){
        return nombre;
    }
   
    public String getApellido () {
        return apellido;
    }
   
    public int getEdad () {
        return edad;
    }
   
    public boolean getCasado () {
        return casado;
    }
   
    public String getDNI () {
        return DNI;
    }
   
    public String getEspecialidad () {
        return especialidad;
    }
   
}
   

Les comento igual que cambie el nombre de la variable numeroDocumentoIdentidad por DNI(Documento Nacional de Identidad, en Argentina), para que no quede tan largo. Muchas gracias.

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".