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

Páginas: 1 [2]
21
Gracias por responder a ambos.

Tal vez al ser codigos cortos, no parezca que haya diferencia, pero sí, como dicen, puede ser complicado al trabajar con programas de verdad.

Estuve revisando la siguiente entrega del curso, CU00642B, pasar objetos como parámetros.

Hay que crear instancias de las clase Taxi y Persona. Luego crear un objeto con el segundo constructor de TaxiCond

Código: [Seleccionar]
public class TaxiCond {
    private Taxi vehiculoTaxi;
    private Persona conductorTaxi;
   
    public TaxiCond () {
        vehiculoTaxi = new Taxi (); //Creamos un objeto Taxi con el constructor general de Taxi
        conductorTaxi = new Persona (); //Creamos un objeto Persona con el constructor general de Persona
    }

    public TaxiCond (Taxi objetoTaxi, Persona objetoPersona) {

         //Creamos un objeto Taxi con los mismos datos del Taxi recibido como parámetro

         vehiculoTaxi = new Taxi (objetoTaxi.getMatricula(), objetoTaxi.getDistrito(), objetoTaxi.getTipoMotor() );

         //Creamos un objeto Persona con los mismos datos de la Persona recibidos como parámetro

        conductorTaxi = new Persona (objetoPersona.getNombre() );     }
       
    public void setMatricula (String valorMatricula) { vehiculoTaxi.setMatricula(valorMatricula); }

    public String getDatosTaxiCond () {
        String matricula = vehiculoTaxi.getMatricula();
        String distrito = vehiculoTaxi.getDistrito();
        int tipoMotor = vehiculoTaxi.getTipoMotor();
        String cadenaTipoMotor = "";

        if (tipoMotor ==0) { cadenaTipoMotor = "Desconocido"; }
        else if (tipoMotor == 1) { cadenaTipoMotor = "Gasolina"; }
        else if (tipoMotor == 2) { cadenaTipoMotor = "Diesel"; }

        String datosTaxiCond = "El objeto TaxiCond presenta estos datos. Matrícula: " + matricula +
            "\n Distrito: " + distrito + " Tipo de motor: " + cadenaTipoMotor;

        System.out.println (datosTaxiCond);
        return datosTaxiCond;
    }

    public void setTipoMotor (int valorTipoMotor){vehiculoTaxi.setTipoMotor(valorTipoMotor);}
}

Bueno, como objeto del parámetro le pasé el objeto taxi1 que lo creé con un constructor que pedía parámetros.

Al inspeccionar el objeto taxiCond1,  me muestra los valores de  taxi1, tambien el del objeto creado de Persona. Hasta ahí bien, y espero se entienda lo que voy diciendo.

Luego, al código TaxiCond le cambié esto:

Código: [Seleccionar]
  public TaxiCond (Taxi objetoTaxi, Persona objetoPersona) {
        vehiculoTaxi = new Taxi (objetoTaxi.getMatricula(), objetoTaxi.getDistrito(), objetoTaxi.getTipoMotor() );
        conductorTaxi = new Persona (objetoPersona.getNombre() );     }
       


y lo dejé así:

Código: [Seleccionar]
  public TaxiCond (Taxi objetoTaxi, Persona objetoPersona) {
        vehiculoTaxi = new Taxi ( );
        conductorTaxi = new Persona (objetoPersona.getNombre() );     }
       


Y ahora, cuando inspecciono taxiCond1,  no me figuran los datos que puse usando el segundo constructor de Taxi, que me pedía parámetros, sino con el primer constructor, sin parámetros.


aver si logro explicarme mejor.

Tengo la clase Taxi con 2 constructores. el primero no pide parámetros pero tiene sus variables inicializadas con a,b,c y d; y el segundo constructor me pide parámetros. creé un objeto taxi1 con el segundo constructor. sus valores son 1,2,3 y 4.

ahora, el segundo constructor de la clase TaxiCond me pide  como parámetro un objeto Taxi. Le pasé taxi1, pero al inspeccionar no me muestra los valores 1,2,3,4 con los que creé taxi1, sino que me muesta los valores a,b,c y d.

Lo que me marea es que,  vehiculoTaxi = new Taxi (objetoTaxi.getMatricula() muestre bien el valor de matricula, mientras que vehiculoTaxi = new Taxi () me muestre un valor que ni tiene taxi1

Me cuesta muchisimo entender el por qué, ni puedo explicarme bien.

Help!

xd


Aver, metodo funcion devuelve algo. get... getMatricula devolveria el valor de matricula del objeto taxi1. 

Al sacar este parámetro "objetoTaxi.getMatricula()", no se qué es lo que pasa, por ahora se me ocurre que al crear la clase TaxiCond...

Código: [Seleccionar]
public class TaxiCond {
    private Taxi vehiculoTaxi;
    private Persona conductorTaxi;

al declarar la variable vehiculoTaxi, de por sí inicializa el constructor sin parámetros que tiene Taxi, que es:

public Taxi () {

        ciudad = "Mexico D.F.";       

        matricula = "asd123";

        distrito = "Desconocido";

        tipoMotor = 2;


22
Hola, tengo una consulta. Una parte del código que dan como ejemplo aparece esto

Código: [Seleccionar]
public String getDatosTaxiCond () {
        String matricula = vehiculoTaxi.getMatricula();
        String distrito = vehiculoTaxi.getDistrito();
        int tipoMotor = vehiculoTaxi.getTipoMotor();
        String cadenaTipoMotor = "";

        if (tipoMotor ==0) { cadenaTipoMotor = "Desconocido"; }
        else if (tipoMotor == 1) { cadenaTipoMotor = "Gasolina"; }
        else if (tipoMotor == 2) { cadenaTipoMotor = "Diesel"; }

        String datosTaxiCond = "El objeto TaxiCond presenta estos datos. Matrícula: " + matricula +
            "\n Distrito: " + distrito + " Tipo de motor: " + cadenaTipoMotor;

        System.out.println (datosTaxiCond);
        return datosTaxiCond;

Crea variables locales y le asignan los métodos de las otras clases.

Pregunto, se podría hacer directo? algo así?

Código: [Seleccionar]
public String getDASDASDASDSA () {
       
        String cadenaTipoMotor = "";

        if (vehiculoTaxi.getTipoMotor() ==0) { cadenaTipoMotor = "Desconocido"; }
        else if (vehiculoTaxi.getTipoMotor() == 1) { cadenaTipoMotor = "Gasolina"; }
        else if (vehiculoTaxi.getTipoMotor( )== 2) { cadenaTipoMotor = "Diesel"; }

        String datosTaxiCond = "El objeto TaxiCond presenta estos datos. Matrícula: " + vehiculoTaxi.getMatricula()+"  \nDistrito+: " + vehiculoTaxi.getDistrito() + " Tipo de motor: " + cadenaTipoMotor;

        System.out.println (datosTaxiCond);
        return datosTaxiCond;
    }

Funciona bien, pero no se si se consideraria adecuado el modo para programar

23
gracias, Gilding, quedó claro =)

24
Hola. Tengo una consulta sobre esto:

Código: [Seleccionar]
Si peso es una variable de tipo int y sobrepeso es una variable de tipo double ó boolean debemos evitar sentencias como sobrepeso = 2 * peso
pero dan este ejemplo de sentencia de asignación compuesta:

Código: [Seleccionar]
saldo  –= precioCaja * cantidadCajas;
precio debe ser tipo double, y cantidad int.
es porque no generaria ningún problema en pasar de entero a decimal?

después, en el curso anterior, el CU00634B , nos pide:

Código: [Seleccionar]
Dadas las variables de tipo int con valores A = 5, B = 3, C = -12 indicar si la evaluación de estas expresiones daría como resultado verdadero o falso:

a) A > 3                                                            b) A > C                                               c) A < C
etc...

con lo que devuelvo un valor boolean en base a valores int.




25
si! funciona!!!

Código: [Seleccionar]
Scanner teclado=new Scanner (System.in);
System.out.print ("Escriba un numero. Escribir 0 indica que ha terminado: ");
int total=teclado.nextInt ();
while (teclado.nextInt () !=0){
System.out.print ("Escriba el siguiente numero: ");
total+=teclado.nextInt ();

luego probé lo otro:

Código: [Seleccionar]
while (total !=0){
total+=teclado.nextInt ();
          }

si por ejemplo escribo 5, "total" vale 5. el bucle compara "total" con 0. no es igual.

empieza el bucle. quiero escribir 0 para finalizar. pero se va a sumar 0+"total", y 0+5 es 5, con lo que el bucle continua hasta infinito



no se si estuve 1, 2 horas probando esto último. y son solo 2 o 3 sentencias.

pero lo ando disfrutando.

lo que me sorprende es lo mucho que ayuda cambiar ideas, o codigos con alguien mas.

de unas 18 lineas creo que era al principio, ahora quedan 14. supongo que eso ahorra recursos de la pc para ejecutar un programa.

mil gracias, Principe.

---------------

queriendo agregar algo me di cuenta que estaba mal el bucle

Código: [Seleccionar]
Scanner teclado=new Scanner (System.in);
System.out.print ("Escriba un numero. Escribir 0 indica que ha terminado: ");
int total=teclado.nextInt ();
while (teclado.nextInt () !=0){
System.out.print ("Escriba el siguiente numero: ");
total+=teclado.nextInt ();

aca me pide ingresar 2 veces algun numero para solo asignar 1 a la variable

Código: [Seleccionar]
while (total !=0){
aca "total" siempre va a ser mayor que 0, con lo que nunca termina



con lo que esto estaba bien

Código: [Seleccionar]
int numero=-1;//inicia el bucle
int total=0;//asigno una variable para llevar la cuenta

Scanner teclado=new Scanner (System.in);
System.out.print ("Escriba un numero. Escribir 0 indica que ha terminado: ");

while (numero  !=0){
System.out.print ("Escriba el siguiente numero: ");
numero=teclado.nextInt ();//sumará y controlará la condicion dl bucle
total+=numero;//voy sumando lo tipeado

por ahora me rindo xd

queria simplificar el codigo pero no pude. aprendí varias cosas igualmente





26
hola Principe

gracias por la respuesta.

lei muchas veces tu respuesta, hasta que por fin entendí xd
hace poco empecé con esto de la programación.

luego probé poniendo y borrando llaves en diferentes partes y me quedó bastante claro.

de paso probé la diferencia entre System.out.print y System.out.println

gracias de nuevo =)



me puse a revisar el siguiente codigo que funciona a medias, me pide ingresar mas de una vez algun numeropara pasar a la siguiente instruccion

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

public class SinAsignarBucle {

public static void main (String [] args) { 
int total=0;

Scanner teclado=new Scanner (System.in);
System.out.print ("Escriba un numero. Escribir 0 indica que ha terminado: ");
total+=teclado.nextInt ();
while (teclado.nextInt () !=0){
System.out.print ("Escriba el siguiente numero: ");
total+=teclado.nextInt ();
}

System.out.println ("El total es "+total);
}



pero, creo que el problema seria el siguiente

Código: [Seleccionar]
while (teclado.nextInt () !=0){
al escribir "teclado.nextInt" indico que tiene que escribir algo, aunque no modifica nada. ahi está el motivo de por qué tengo que ingresar mas de una vez.

entonces, lo que tengo que hacer antes es asignar una variable que tome el valor de lo que escriba, y que haga 2 cosas:

  • sumar el numero tipeado a "total"
  • hacer saber al bucle si tiene que inicializar (asi se dice?) segun lo sentenciado en él

Entonces quedaria así

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

public class SinAsignarBucle {

public static void main (String [] args) { 
int numero=-1;
int total=0;

Scanner teclado=new Scanner (System.in);

System.out.print ("Escriba un numero. Escribir 0 indica que ha terminado: ");

while (numero  !=0){
System.out.print ("Escriba el siguiente numero: ");
numero=teclado.nextInt ();
total+=numero;
}

System.out.println ("El total es "+total);
}



creo que entiendo cual era el problema. ahora, no se si habrá alguna manera mas directa, o simple

27
Hola. Anduve probando un poco y me topé con esto.

Con la primer clase me resulta bien:

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

public class ConAsignarBucle {
    private static int total=0;
    private static int permiteBucle=-1;
   
    public ConAsignarBucle (){
        total=0;
        permiteBucle=-1;
}
       
    public static void main (String [] args) { 
        Scanner teclado=new Scanner (System.in);
        System.out.println ("Escriba un numero. Escribir 0 indica que ha terminado :");
               
        while (permiteBucle !=0){
            permiteBucle=teclado.nextInt ();
            total+=permiteBucle ;
            if (permiteBucle!=0)
            System.out.print ("Escriba un numero: ");   
        }
       
System.out.println ("El total es : "+total);
     }

}

Probé poner a esto

Código: [Seleccionar]
            if (permiteBucle!=0)
            System.out.print ("Escriba un numero:");   

ponerle corchetes (perdon, aun no me se bien los nombres de cada linea, parte)

Código: [Seleccionar]
            if (permiteBucle!=0) {
System.out.print ("Escriba un numero:");   
}

La clase sigue funcionando bien. Pero por qué? Agregar corchetes no deberia afectar al código?



Bueno, luego probé lo siguiente, lo que ya no me resultó bien:

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

public class SinAsignarBucle {

public static void main (String [] args) { 
int total=0;

Scanner teclado=new Scanner (System.in);
System.out.println ("Escriba un numero. Escribir 0 indica que ha terminado: ");

while (teclado.nextInt () !=0){
total+=teclado.nextInt (); 
if (teclado.nextInt () !=0)
System.out.println ("Escriba la duracion del siguiente tema: ");
}

System.out.println ("El total es "+total);
}



Compila, se ejecuta, y me da el resultado final, la suma, lo unico que tengo que tipear 3 veces algun numero.

Me interesa saber qué hice mal, y si hay alguna forma de arreglarlo sin hacerlo como la primer clase.

Tambien me interesa mucho saber por qué, al ejecutar el código, tengo que ingresar 3 veces un número. Por qué justo 3? si es que se me entiende. Variando un poco el codigo me llegó a pedir 2 veces.





Y una ultima consulta.  No se si ya esto tendría que ir en un nuevo tema o no, el caso es que no podía lograr tipear decimales, me tiraba error. Y encontré esto que me funcionó

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

public class Prueba1 {

public static void main(String[] args) {
Scanner AH=new Scanner (System.in);
System.out.println("Introduce Un Numero:");

float num=0;
float bandera=-1;
while (bandera!=0){
bandera=Float.parseFloat(AH.next());
num+=bandera;
if(bandera==0)

System.out.println("la suma final es:"+num);
}
}
}


De aca me surgen 2 dudas.  Para poder tipear decimales lo que me sirve es esta linea?

Código: [Seleccionar]
x=Float.parseFloat(AH.next());
especificando, seria esto:
Código: [Seleccionar]
Float.parseFloat(AH.next());

Perdon si junté varias cosas en un mismo tema. O si omití algo importante.


28
ufff, buenisimo!

muchas gracias!

29
a, con razón no encontraba nada navegando.

gracias

30
Aprender a programar desde cero / blueJ. Crear un objeto y guardarlo
« en: 11 de Noviembre 2014, 01:39 »
hola

empecé a usar el blueJ

creé la clase Taxi, lo compilé y desde el programa le hago botón derecho a la clase, para crear un nuevo objeto seleccionando "new Taxi()"

me crea el objeto, como se ve en los tutoriales de la página, pero no encuentro la manera de guardar ese objeto creado.

hay manera de guardar el objeto?

31
Gracias!

me detallaste todo

da gusto aprender así =)

lei en algunas paginas que un IDE te facilita el trabajo, con lo cual no llegás a aprender todo.

aunque tampoco encontré un tutorial como el de esta web, y el foro es activo.

descargo el blueJ y empiezo de nuevo con el tuto.

gracias de nuevo.

elmaxi. puse como dijiste pero igual sale mal las letras con acentos que pongo en el código.


32
Código: [Seleccionar]
public class Profesor{
private String nombre="";
private String apellidos="";
private int edad=0;
private boolean casado=false;
private boolean especialista=false;

public Profesor (String nombreProfesor, String apellidosProfesor){
nombre=nombreProfesor;
apellidos=apellidosProfesor;
edad=30;
casado=true;
especialista=true;
}

public Profesor (){
nombre="Carlos";
apellidos="Ñoqui";
edad=49;
casado=false;
especialista=true;
}

public String getNombre () {return nombre;}
public String getApellidos () {return apellidos;}
public int getEdad () {return edad;}
public boolean getCasado () {return casado;}
public boolean getEspecialista () {return especialista;}

public static void main (String[] ar){
Profesor profesor1=new Profesor ("Mario","Luigi");
profesor1.getNombre ();
profesor1.getApellidos ();
profesor1.getEdad ();
profesor1.getCasado ();
profesor1.getEspecialista ();

Profesor profesor2=new Profesor ();
profesor2.getNombre ();
profesor2.getApellidos ();
profesor2.getEdad ();
profesor2.getCasado ();
profesor2.getEspecialista ();
}
}


Quisiera saber si está bien armado.

También quiero consultar algo.

Ando usando el NotePad++ para escribir. Cuando compilo y ejecuto, las palabras con acento me sale con caracteres, como que no me toma el acento y muestra otra cosa.

Cómo arreglo eso?

33
Aprender a programar desde cero / Re:CU00623B / consulta de una linea
« en: 09 de Noviembre 2014, 21:05 »
gracias =)

34
Aprender a programar desde cero / Re:CU00623B / consulta de una linea
« en: 08 de Noviembre 2014, 16:36 »
sí, entendí.

gracias

lo que me cuesta entender es el ejemplo que das

distrito = "D. = " + valorDistrito;

ejecutando el programa quedaria escrito así?

D. = Norte/Sur/etc

me confunde un poco que haya otro simbolo =, pero al estar entrecomillas, indica que ese = es parte del texto?




35
Código: [Seleccionar]
/* Ejemplo - aprenderaprogramar.com */

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

 

    //Constructor: cuando se cree un objeto taxi se ejecutará el código que incluyamos en el constructor

    public Taxi () {

        ciudad = “México D.F.”;       

        matricula = "";

        distrito = "Desconocido";

        tipoMotor = 0;

    } //Cierre del constructor … el código continúa …

 

    //Método para establecer la matrícula de un taxi

    public void setMatricula (String valorMatricula) {

        matricula = valorMatricula; //La matrícula del objeto taxi adopta el valor que contenga valorMatricula

    } //Cierre del método

    //Método para establecer el distrito de un taxi

    public void setDistrito (String valorDistrito) {

        distrito = "Distrito " + valorDistrito; //El distrito del objeto taxi adopta el valor indicado

    } //Cierre del método

    public void setTipoMotor (int valorTipoMotor) {

        tipoMotor = valorTipoMotor; //El tipoMotor del objeto taxi adopta el valor que contenga valorTipoMotor

    } //Cierre del método

    //Método para obtener la matrícula del objeto taxi

    public String getMatricula () { return matricula; } //Cierre del método

    //Método para obtener el distrito del objeto taxi

    public String getDistrito () { return distrito; } //Cierre del método

    //Método para obtener el tipo de motor del objeto taxi

    public int getTipoMotor () { return tipoMotor; } //Cierre del método

} //Cierre de la clase


Hola. Mi consulta es sobre la línea 45

distrito = "Distrito " + valorDistrito; //El distrito del objeto taxi adopta el valor indicado

por qué se suma en vez de solamente tomar un nuevo valor?
según las otras líneas debería ser así

distrito = valorDistrito;

Páginas: 1 [2]

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