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.


Temas - 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

2
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();
    }
   
}

3
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.

4
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".