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 - César Krall

Páginas: 1 ... 34 35 36 37 38 [39] 40 41 42 43 44 ... 68
761
De todo un poco... / Re:Programación en C# desde cero
« en: 08 de Marzo 2015, 14:45 »
Hola gherard7, nuestra intención es ir ampliando contenidos del portal y añadiendo nuevos lenguajes (entre los que estaría C#) pero por el momento no disponemos de tutorial en este lenguaje ni tenemos fecha definitiva para su publicación. Saludos!

762
Hola tienes mal escrito esto listaCantantesFamosos=new Arraylist<CantanteFamoso>();

Cuando debe ser listaCantantesFamosos=new ArrayList<CantanteFamoso>();

Es decir la ele de ArrayList es mayúscula, no minúscula.

Saludos!

763
Hola ahora mucho mejor!!!

Un detalle, en la clase producto has escrito:

String fechaDeCaducidad = "", numeroDeLote = "", nombre = "";

Esto no debes hacerlo así. Primero debes declarar los atributos,  y luego en un constructor sin parámetros hacer esta inicialización. Recuerda que una clase puede tener más de un constructor.

Saludos!!!

764
Hola Plara6157, la idea de los ejercicios es que se intenten resolver por parte de las personas que están haciendo el curso para obtener comentarios o sugerencias de moderadores y otros usuarios del foro. Para ello pega el código que hayas desarrollado. En caso de querer consultar las soluciones que hayan propuesto otros usuarios puedes hacerlo buscando en los foros. Saludos!

Recomendado: leer esto https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0

765
Hola Juan, sobre tu ejercicio

Citar
Se plantea desarrollar un programa Java que permita la gestión de una empresa agroalimentaria que trabaja con tres tipos de productos: productos frescos, productos refrigerados y productos congelados.
--> Las has creado correctamente

Citar
Todos los productos llevan esta información común: fecha de caducidad y número de lote.
-- > Lo has incluido en la superclase Producto, correcto

Citar
A su vez, cada tipo de producto lleva alguna información específica.

Los productos frescos deben llevar la fecha de envasado y el país de origen.
-- > Correcto

Citar
Los productos refrigerados deben llevar el código del organismo de supervisión alimentaria.
  -- > Correcto

Citar
Los productos congelados deben llevar la temperatura de congelación recomendada.
-- > Correcto


Citar
Crear el código de las clases Java implementando una relación de herencia desde la superclase Producto hasta las subclases ProductoFresco, ProductoRefrigerado y ProductoCongelado.
-- > Correcto



Citar
Cada clase debe disponer de constructor y permitir establecer (set) y recuperar (get) el valor de sus atributos y tener un método que permita mostrar la información del objeto.
-- > TE FALTA INCLUIR LOS MÉTODOS QUE PERMITAN MOSTRAR LA INFORMACIÓN DEL OBJETO

Citar
Crear una clase testHerencia2 con el método main donde se cree un objeto de cada tipo y se muestren los datos de cada uno de los objetos creados.
  -- > tiene varias cosas a mejorar, debido a fallos en el código de las clases

1) La clase Producto debe tener un constructor que reciba los parámetros necesarios para un producto Tú has escrito este constructor:

Código: [Seleccionar]
    public Producto(String valorNombre) {
        fechaDeCaducidad = "";
        numeroDeLote = "";
        nombre = valorNombre;
    }

Pero debe existir un constructor que reciba tanto nombre como fecha de caducidad como numero de lote

En las subclases ocurre lo mismo:

Código: [Seleccionar]
   public ProductoFresco(String nombre){
        super(nombre);
        fechaDeEnvasado = "";
        paisDeOrigen = "";
    }

Debe existir un constructor que reciba todos los parámetros con que trabaja la clase, es decir, 5 parámetros, los tres de la superclase y los dos propios.

En las otras subclases lo mismo


2) En vez de hacer esto para inicializar

Código: [Seleccionar]
        vegetal.setFechaDeCaducidad("25-03-2015");
        vegetal.setFechaDeEnvasado("25-02-2015");
        vegetal.setNumeroDeLote("001");
        vegetal.setPaisDeOrigen("Perú");

deberías usar el constructor y hacerlo en una sola línea

3) En vez de usar esto para mostrar la información de un producto

Código: [Seleccionar]
System.out.println("El producto "+vegetal.getNombre()+
                            " tiene como fecha de caducidad el "+vegetal.getFechaDeCaducidad()+
                            ", y fecha de envasadado el "+vegetal.getFechaDeEnvasado()+
                            " con numero de lote "+vegetal.getNumeroDeLote()+
                            " y tiene como pais de origen "+vegetal.getPaisDeOrigen()+".");

Deberías llamar a un método del objeto que muestre la información del producto.

Te recomiendo revisar el código propuesto por compañeros en el foro y replantear el ejercicio para mejorarlo

Saludos!

766
Exactamente, todo objeto declarado referencia a NULL hasta que lo inicializas usando la sentencia new  :)

767
Tu planteamiento era correcto, pero a veces eso no es suficiente, de ahí que además de hacer planteamientos correctos sea necesario comprobar los resultados porque puede haber factores que no controlemos. Exactamente lo que has hecho. A seguir así, saludos.

768
Sí, es correcto. text1, text2, textLarge, textShort y x no son atributos de la clase, son variables locales al método main. Las variables locales son variables que usas dentro de un método "según tengas necesidad", no hay problema siempre que mantengas una lógica. Creo que todavía podrías acortar más el código si en vez de la comparación if (text1.length()==text2.length()) usas una comparación basada en textLarge y textShort. Creo que podrías simplemente extraer todas las letras del texto largo hasta la longitud del texto corto (un bucle) y si el texto largo tiene más letras, mostrar el mensaje de que no se pueden comparar esas letras. De todas formas no te preocupes, sigue avanzando. Saludos!

769
No, una vez haces a = new Clase1(); esto significa que ya el objeto está inicializado. En este caso estará inicializado como establezca el constructor por defecto (que no recibe parámetros). Puede que los atributos del objeto carezcan de contenido con sentido, pero una vez que usas new ya tienes el objeto inicializado. Saludos

770
Hola creo que leyendo https://www.aprenderaprogramar.com/foros/index.php?topic=991 se te aclarará la duda. Saludos!

771
Hola calderas

Respuesta a) es correcta

Respuesta b) Podemos decir que existe una identidad en null (situación especial). Conviene tener cuidado con esta respuesta.

null significa alguna de estas cosas: objeto declarado pero no inicializado, condición de terminación de una serie de objetos, el objeto no existe, el objeto no tiene un contenido definido, el contenido del objeto ha sido eliminado explícitamente estableciéndose a null.

En Java se cumple lo siguiente: null == null (en otros lenguajes no es así).

Por tanto si no se han inicializado piloto == copiloto1 resulta true y copiloto1 == copiloto2 también es true, y si consideramos que toda comparación con == que devuelve true implica una relación de identidad, sí habría relación de identidad. La identidad consistiría en "los tres objetos son el mismo objeto: null".

Hay que considerar null una situación especial de un objeto.


Respuesta c) No es correcta: si no se inicializan el contenido de los atributos será null.


Para quien quiera analizar el comportamiento de null, este ejemplo puede ser útil:

Definimos una clase cualquiera:

Código: [Seleccionar]
public class Clase1 {
    private int x;
    public Clase1()    {x = 0;}
}

Y probamos a crear un objeto de otra clase que tiene como atributos objetos de la Clase1:

Código: [Seleccionar]
public class Prueba {
    private Clase1 a;
    private Clase1 b;
    private Clase1 c;
   
    public Prueba() {}
   
    public void probando() {
        if (a==b) {System.out.println("Hay identidad entre a y b") ;}
        if (a!=b) {System.out.println("NO Hay identidad entre a y b"); }
        a = new Clase1();
        System.out.println("Objeto a: "+a);
        System.out.println("Objeto b: "+b);
        System.out.println("Objeto c: "+c);
        a = null;
        System.out.println("Objeto a: "+a);
    }
   
    public static void main (String[] Args) {
        Prueba p = new Prueba();
        p.probando();
    }
}

El resultado de ejecutar el código es:

Hay identidad entre a y b
Objeto a: Clase1@e0f1c2
Objeto b: null
Objeto c: null
Objeto a: null


Saludos!

772
Hola! El código está bien planteado y bien estructurado. A modo de ejercicio te propongo que lo mejores de la siguiente manera: en lugar del código para if(text1.length()>text2.length()), else if(text1.length()<text2.length()), que resulta repetitivo, intentar analizar cuál es la palabra más larga y cuál es la más corta y almacenarlas en Strings temporales, de modo que tengas un solo bucle while. De ese modo, el código quedaría en menos líneas y si podemos hacer lo mismo con menos líneas, mejor. Saludos!

773
Hola, puedes empezar leyendo y consultando las dudas que te surjan:

Una visión general en https://www.aprenderaprogramar.com/foros/index.php?topic=1313.0

Distintos artículos de interés para empezar en http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=23&Itemid=80

Saludos!!

774
Sí, ya veo que te respondiste tú mismo  :o Para quien tenga la duda de por qué es necesario usar PHP_EOL, decir que el código que se inserta con php es código html, y las salidas de html no reconocen saltos de línea ni espacios unidos, es decir:

echo 'Hoy es
un
dia
frío';

Se mostraría como Hoy es un día frío.

En cambio

echo 'Hoy es'.PHP_EOL.'un'.PHP_EOL.'día'.PHP_EOL.'frío';
 
Se mostraría como

Hoy es
un
dia
frío


Saludos!!

775
Hola, veo varias maneras de resolver esto que comentas. Una sería crear un artículo único dentro del cual tengas tres iframes. Dentro de cada iframe pondrías una vista a la categoría de artículos que quieras mostrar. Es posible que el editor te borre código html que quieras introducir dentro de artículos, para evitarlo tendrías que configurar joomla adecuadamente (bien en el editor manager configuración del plugin del editor, bien en la configuración global los filtros de texto (puedes elegir no filtrar para superadministradores).

Otra manera sería usar pestañas, por ejemplo la extensión Tabs & Sliders [for articles] que puedes consultar en http://extensions.joomla.org/extensions/extension/news-display/article-elements/tabs-sliders-for-articles a lo mejor te resulta útil

Tienes otras posibilidades como http://extensions.joomla.org/extension/admiror-frames

Quizás lo mejor es que mires alternativas dentro de http://extensions.joomla.org/ ya que hay muchas posibilidades

Saludos!!

776
Hola! Comprueba esto:

- Si tienes algún caracter o alguna instrucción que da lugar a una salida antes de session_start() (ten en cuenta que puede ser un caracter oculto. Compruébalo con un editor como notepad++ escogiendo codificación de archivo utf-8 sin bom)

- Si estás navegando desde una url con http://w ww.midominio.com hacia otra con http://m idominio.com. En este caso php puede generar un nuevo session_id por considerar que se trata de un dominio distinto y no reconocer las variables de sesión del otro dominio.

Sludos

777
Nuestra recomendación es seguir el curso que te he indicado desde el principio, e ir posteando los ejercicios para que te los revisemos moderadores u otros compañeros que ayudan en los foros, de esa forma te aseguras de llevar todos los contenidos necesarios en el orden adecuado. Saludos!

778
Hola, en el código se ve algo que no parece propio de un buen diseño, al menos en cuanto a nombres. Me refiero a que la clase con el método main se llame CambiarColorCasa. Esto más bien parece el nombre de un método de la clase Casa que un nombre de una clase con el main.

Ya sobre el uso de enum, la impresión que me da con el código que has puesto es que no estás diferenciando bien lo que es un enum de lo que es un String, y un enum no es un String (aunque cada uno de los valores de un enum pueda llevar asociado un String si queremos).

Te dejo este código que viene siendo un ejemplo simple a ver si te sirve para lo que intentas hacer:


Clase donde definimos el tipo enumerado:

Código: [Seleccionar]
// Ejemplo aprenderaprogramar.com
// Clase que contiene los tipos de color que se permiten para una casa

public enum Color {
    INDEFINIDO ("indefinido"), //Separamos con comas
    ROJO ("rojo"),
    VERDE ("verde"),
    AZUL("azul");  //Cuando terminamos cerramos con ;

    //Campos tipo constante   
    private final String color; //Color permitido para una casa

    /**
     * Constructor. Al asignarle uno de los valores posibles a una variable del tipo enumerado el constructor asigna
    automáticamente valores de los campos
     */

    Color (String color) {
        this.color = color;
    } //Cierre del constructor

    //Métodos de la clase tipo Enum
    public String getColor() { return color; }
} //Cierre del enum

Clase con el método main

Código: [Seleccionar]
import java.util.Scanner;

public class testColoresCasa {
    public static void main (String[] Args)    {
        String colorComoStringElegidoUsuario = "";
        Color colorUsuario = Color.INDEFINIDO;

        Color coloresPermitidos[] = {Color.ROJO, Color.VERDE, Color.AZUL};

        System.out.println("Comenzamos");
        Scanner scan = new Scanner(System.in);

        System.out.print("Introduzca el color de la casa: ");
        colorComoStringElegidoUsuario = scan.nextLine();

        System.out.println("¿Qué nos devuelve toString para un tipo enumerado? "+Color.ROJO.toString());

        System.out.println("¿Podemos comparar un String con un enum? No ");
        // +(Color.ROJO==colorComoStringElegidoUsuario) no podemos usarlo

        if (colorComoStringElegidoUsuario.equalsIgnoreCase("rojo")) {colorUsuario = Color.ROJO;}

        if (colorUsuario == Color.ROJO) {
            System.out.println("El color elegido es válido");
        }
        else {
            System.out.println("Usted no ha elegido el rojo, ese es el único color permitido");
        }

    }
}

Revísalo a ver si te sirve y nos cuentas!!!

779
Hola ZID, creo que el código de la última clase que intentabas pegar ha salido cortado. Intenta ponerlo completo para poder analizarlo. Para el estudio de java recomendamos seguir este curso, donde se tratan también los tipos enumerados: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

Saludos!

780
Hola, se trata de un programa entretenido pero presenta algunos problemas.

El primer problema, es que necesitas limpiar la consola en la que se muestran resultados, no basta con introducir espacios en blanco porque esto hace muy difícil controlar dónde se muestra el dibujo. System.out.println(""); no sirve como equivalente a limpiar pantalla.

Limpiar la consola depende del entorno de desarrollo que estés utilizando. Yo lo he conseguido en BlueJ con la instrucción System.out.print('\u000C');

En otros entornos puede que funcione algunas de estas opciones:

a) Runtime.getRuntime().exec("cls");

b) System.out.print("\033[H\033[2J");
System.out.flush();

c) Otras opciones (depende del entorno)


Una vez consigas limpiar la consola, para simular el movimiento del cohete hacia arriba tienes que redibujarlo partiendo de una línea inferior y en cada redibujado pintarlo en una línea más arriba. Eso hay que controlarlo con una instrucción de este tipo: for (j=1;j<=15-i;j++) , ahí se introduce -1 para que en cada redibujado se dibuje un poco más arriba (el pseudocódigo parece que no contempla esto).

Con estas ideas e introduciendo pequeños cambios que puedes variar a tu gusto, he logrado que se muestre la cuenta atrás, el cohete despegue, explote y caiga (en BlueJ, para otros entornos habría que probarlo viendo cómo se puede limpiar la consola en ese entorno).

El código que me ha funcionado es este:

Código: [Seleccionar]
import java.io.*;

public class Misil {

    public static void main(String args[]) throws IOException, InterruptedException {
        String cohete[];
        int estado[];
        int i;
        int j;
        int k;
        int a;
        String humo = " * * * * *";

        System.out.print("Presione una tecla para iniciar el lanzamiento...");
        System.in.read();
        cohete=new String[9];
        cohete[0]="   /|\\   ";
        cohete[1]="   |B|   ";
        cohete[2]="   |O|   ";
        cohete[3]="   |M|   ";
        cohete[4]="   |B|   ";
        cohete[5]="  //|\\\\  ";
        cohete[6]=" ******* ";
        cohete[7]="* * * * *";
        cohete[8]=" * * * * ";
        for (i=1;i<=4;i++) {
            System.out.print('\u000C');
            for (j=1;j<=15;j++) {
                System.out.println("");
            }
            for (j=1;j<=6;j++) {
                System.out.println(cohete[j-1]);
            }
            System.out.println("");
            a = 4-i;
            System.out.println("Lanzamiento en "+a);
            Thread.sleep(1*1000);
        }

        for (i=1;i<=10;i++) {
            System.out.print('\u000C');
            for (j=1;j<=15-i;j++) {
                System.out.println("");
            }
            for (j=1;j<=8;j++) {
                System.out.println(cohete[j-1]);
            }
            if (i>1) {
                for (k=0; k<i; k++) {
                    System.out.println(" * * * * ");
                }
            }
            Thread.sleep((1/1)*1000);
        }

        estado=new int[6];
        estado[0]=3;
        estado[1]=2;
        estado[2]=1;
        estado[3]=2;
        estado[4]=3;
        estado[5]=4;
        for (i=1;i<=10;i++) {
            System.out.print('\u000C');
            for (j=1;j<=5+i;j++) {
                System.out.println("");
            }
            for (j=1;j<=6;j++) {
                estado[j-1]=estado[j-1]-1;
                switch (estado[j-1]) {
                    case 0:
                    cohete[j-1]="    +    ";
                    break;
                    case -1: case -5:
                    cohete[j-1]="   +X+   ";
                    break;
                    case -2: case -4:
                    cohete[j-1]="  +XXX+  ";
                    break;
                    case -3:
                    cohete[j-1]=" +XXXXX+ ";
                    break;
                    case -6:
                    cohete[j-1]="         ";
                    break;
                }
                System.out.println(cohete[j-1]);
            }
            Thread.sleep(1*800);
        }

    } //Cierre main

}


Pruébalo y dime si consigues hacerlo funcionar!!!

Páginas: 1 ... 34 35 36 37 38 [39] 40 41 42 43 44 ... 68

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