[JAVA] Ejercicio: Tiempo

Acabo de terminar este ejercicio. Puede verse un poco complicado, pero no lo es tanto. Intenté explicar todo dentro del mismo ejercicio, pero cualquier duda ya saben.


Clase plano


class Tiempo{

private int hora, minutos;
private char tipo;

int cantidadDigitosHora(){

int c=0; // Contador de digitos

while(hora>0){

hora=hora/10;
c++; // Sumamos +1 al contador de digitos

}

return c;

}

int cantidadDigitosMinutos(){

int c=0; // Contador de digitos

/* En el caso de que los minutos sean 0
* se indica inmediatamente que solo es
* 1 digito. Ya que no podemos dividir
* 0 por 10 en el caso de abajo
* Gracias a Fito por avisparse!
*/

if(minutos == 0){

c=1;

} else {

while(minutos>0){

minutos=minutos/10;
c++; // Sumamos +1 al contador de digitos

}

}

return c;

}

boolean horaInvalida(){

if(hora<1 || hora>12){

return true; //La hora es menor a 1 o mayor que 12. INVALIDA.

} else {

return false; //La hora se encuentra en el rango 1-12. VALIDA.

}

}

boolean minutoInvalido(){

if(minutos<0 || minutos>59){

return true; //Los minutos son menor a 0 o mayor que 60. INVALIDA.

} else {

return false; //Los minutos son encuentran en el rango 0-59. VALIDA.

}

}

void restableceHora(){

if(horaInvalida()){

hora=1; // Cambiamos la hora a 1

}

}

void restableceMinutos(){

if(minutoInvalido()){

minutos=30; // Cambiamos los minutos a 30

}

}

void avanzaMinuto(){

if(tipo=='a' && hora==12 && minutos==59){ // 1er caso: 12:59 am + 1 = 1:00 pm

/* Cambia la hora de AM a PM
* en el caso de que fuesen las 12:59 am
* quedando 1:00 pm
*/

hora=1;
minutos=0;
tipo='p';

} else if(tipo=='p' && hora==12 && minutos==59){ // 2do caso: 12:59 pm + 1 = 1:00 am

/* Cambia la hora de PM a AM
* en el caso de que fuesen las 12:59 pm
* quedando 1:00 am
*/

hora=1;
minutos=0;
tipo='a';

} else if(minutos==59){ // 3er caso: hh:59 am/pm + 1 minuto = hh+1:00 am/pm

/* Suma una hora en el caso
* de que fuesen las hh:59
* Ejemplo: 4:59 pm cambia a 5:00 pm
*/

hora=hora+1;
minutos=0;

} else { // 4to caso: hh:mm am/pm + 1 minuto = hh:mm+1

minutos=minutos+1;

}

}

void disminuyeMinuto(){

if(tipo=='a' && hora==1 && minutos==00){ // 1er caso: 1:00 am - 1 = 12:59 pm

/* Cambia la hora de AM a PM
* en el caso de que fuesen las 1:00 am
* quedando 12:59 pm
*/

hora=12;
minutos=59;
tipo='p';

} else if(tipo=='p' && hora==1 && minutos==00){ // 2do caso: 1:00 pm - 1 = 12:59 am

/* Cambia la hora de PM a AM
* en el caso de que fuesen las 1:00 pm
* quedando 12:59 am
*/

hora=12;
minutos=59;
tipo='a';

} else if(minutos==00){ // 3er caso: hh:00 am/pm - 1 minuto = hh-1:59 am/pm

/* Resta una hora en el caso
* de que fuesen las hh:00
* Ejemplo: 5:00 pm cambia a 4:59 pm
*/

hora=hora-1;
minutos=59;

} else { // 4to caso: hh:mm am/pm - 1 minuto = hh:mm-1

minutos=minutos-1;

}

}

}


App

class AppTiempo{

public static void main(String[]arg){

int hora, minutos;
char tipo;

// OBJETO UNO //

System.out.println("Hora: ");
hora=Leer.datoInt();
System.out.println("Minutos: ");
minutos=Leer.datoInt();
System.out.println("AM/PM (a o p): ");
tipo=Leer.datoChar();

Tiempo uno = new Tiempo(hora, minutos, tipo);

// OBJETO DOS //

System.out.println("Hora: ");
hora=Leer.datoInt();
System.out.println("Minutos: ");
minutos=Leer.datoInt();
System.out.println("AM/PM (a o p): ");
tipo=Leer.datoChar();

Tiempo dos = new Tiempo(hora, minutos, tipo);

// OBJETO TRES //

System.out.println("Hora: ");
hora=Leer.datoInt();
System.out.println("Minutos: ");
minutos=Leer.datoInt();
System.out.println("AM/PM (a o p): ");
tipo=Leer.datoChar();

Tiempo tres = new Tiempo(hora, minutos, tipo);

System.out.println("");
System.out.println("Tiempo Hora:Minutos am/pm");
System.out.println(" 1 "+uno.getHora()+":"+uno.getMinutos()+" "+uno.getTipo());
System.out.println(" 2 "+dos.getHora()+":"+dos.getMinutos()+" "+dos.getTipo());
System.out.println(" 3 "+tres.getHora()+":"+tres.getMinutos()+" "+tres.getTipo());

uno.restableceHora();
uno.restableceMinutos();
dos.restableceHora(); // Se restablecen los tiempos
dos.restableceMinutos();
tres.restableceHora();
tres.restableceMinutos();

System.out.println("");
System.out.println("## Tiempos restablecidos ##");
System.out.println("Tiempo Hora:Minutos am/pm");
System.out.println(" 1 "+uno.getHora()+":"+uno.getMinutos()+" "+uno.getTipo());
System.out.println(" 2 "+dos.getHora()+":"+dos.getMinutos()+" "+dos.getTipo());
System.out.println(" 3 "+tres.getHora()+":"+tres.getMinutos()+" "+tres.getTipo());

uno.avanzaMinuto();
tres.avanzaMinuto(); // +1 minutos tiempo 1 y 3. -1 minuto tiempo 2
dos.disminuyeMinuto();

System.out.println("");
System.out.println("## Se avanzo +1 minuto a los tiempos 1 y 3; y -1 minuto al tiempo2 ##");
System.out.println("Tiempo Hora:Minutos am/pm");
System.out.println(" 1 "+uno.getHora()+":"+uno.getMinutos()+" "+uno.getTipo());
System.out.println(" 2 "+dos.getHora()+":"+dos.getMinutos()+" "+dos.getTipo());
System.out.println(" 3 "+tres.getHora()+":"+tres.getMinutos()+" "+tres.getTipo());

}

}

Etiquetas Etiquetas: , | 0 comentarios

[JAVA] Ejercicio: Termómetro

Desde ahora en adelante no pondré los métodos get, set ni los constructores en la clase plano.

Clase Plano


class Termometro{

private double temperatura, minima, maxima;


/* Estos metodos son void porque no retornan nada
* si se fijan en la guia dice que solo cumplen
* un proceso especifico. No tienen retorno alguno.
*/

void subeTemperatura(double incremento){

if(temperatura+incremento > maxima){

temperatura=maxima;

} else {

temperatura=temperatura+incremento;

}

}

void bajaTemperatura(double incremento){

if(temperatura-incremento < minima){

temperatura=minima;

} else {

temperatura=temperatura-incremento;

}

}

}



App

class AppTermometro{

public static void main(String[]arg){

double temperatura, minima, maxima;

// OBJETO UNO //
System.out.println("Temperatura: ");
temperatura=Leer.datoInt();
System.out.println("Minima: ");
minima=Leer.datoInt();
System.out.println("Maxima: ");
maxima=Leer.datoInt();

Termometro uno=new Termometro(temperatura, minima, maxima);

// OBJETO DOS //
System.out.println("Temperatura: ");
temperatura=Leer.datoInt();
System.out.println("Minima: ");
minima=Leer.datoInt();
System.out.println("Maxima: ");
maxima=Leer.datoInt();

Termometro dos=new Termometro(temperatura, minima, maxima);

// INFORMACION //

System.out.println("Temperatura objeto uno: "+uno.getTemperatura()+"ºC | Temperatura objeto dos: "+dos.getTemperatura()+"ºC");

// MODIFICAR //

System.out.println("Subir temperatura primer objeto en: ");
temperatura=Leer.datoInt();
uno.subeTemperatura(temperatura); // Subimos la temperatura

System.out.println("Bajar temperatura segundo objeto en: ");
temperatura=Leer.datoInt();
dos.bajaTemperatura(temperatura); // Subimos la temperatura

// INFORMACION //

System.out.println("Temperatura objeto uno: "+uno.getTemperatura()+"ºC | Temperatura objeto dos: "+dos.getTemperatura()+"ºC");

}

}

Etiquetas Etiquetas: , | 1 comentarios

[JAVA] Ejercicio: Punto

Este ejercicio no tiene mayor dificultad, así que dudo en verdad que hayan tenido problemas con el.


Clase plano


class Punto{

private int x, y;

Punto(int x, int y){

this.x=x;
this.y=y;

}

void setX(int x){

this.x=x;

}

void setY(int y){

this.y=y;

}

int getX(){

return x;

}

int getY(){

return y;

}

int cuadrante(){

if(x>0 && y>0){ // Cuadrante 1

return 1;

} else if(x<0 && y>0){ // Cuadrante 2

return 2;

} else if(x<0 && y<0){ // Cuadrante 3

return 3;

} else if(x>0 && y<0){ // Cuadrante 4

return 4;

} else { // Punto (0,0). Escapa de todos los cuadrantes.

return 0; // Devolvemos 0 indicando que no es parte de ningun cuadrante
}

}

int mayor(){

/* Voy a hacer este metodo con if
* aunque se puede hacer usando
* la clase Math.
*/

if(x>y){

return x;

} else {

return y;

}

}

}



App


class AppPunto{

public static void main(String[]arg){

int x, y;

// OBJETO UNO //
System.out.println("Ingrese X: ");
x=Leer.datoInt();
System.out.println("Ingrese Y: ");
y=Leer.datoInt();

Punto uno=new Punto(x, y);

// OBJETO DOS //
System.out.println("Ingrese X: ");
x=Leer.datoInt();
System.out.println("Ingrese Y: ");
y=Leer.datoInt();

Punto dos=new Punto(x, y);

// INFORMACION //

System.out.println("P1: ("+uno.getX()+","+uno.getY()+") P2: ("+dos.getX()+","+dos.getY()+")");
System.out.println("P1 se encuentra en el cuadrante: "+uno.cuadrante()+" | P2 se encuentra en el cuadrante: "+dos.cuadrante());
System.out.println("Cordenada mayor P1: "+uno.mayor()+" | Cordenada mayor P2: "+dos.mayor());

// MODIFICAR COORDENADAS //

System.out.println("Nueva coordenada X P1: ");
x=Leer.datoInt();
uno.setX(x); // Se modifica X en el P1(objeto uno)

System.out.println("Nueva coordenada Y P2: ");
y=Leer.datoInt();
dos.setY(y); // Se modifica Y en el P2(objeto dos)

System.out.println("P1: ("+uno.getX()+","+uno.getY()+") P2: ("+dos.getX()+","+dos.getY()+")");

}

}

Etiquetas Etiquetas: , | 0 comentarios

[JAVA] Ejercicio: Celular (actualizado)

A continuación les dejo la clase plano que hice para el ejercicio Celular, faltaría hacer el App el cual lo pondré mas adelante en este mismo post.

No coloqué los métodos get y set por motivos obvios. Se supone que ya todos saben hacerlos, así se ahorra espacio.

Cualquier duda ya saben, sólo comenten y les respondo.

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

Actualización: Modifiqué la clase plano y agregué el App del ejercicio.

Modifiqué el tipo de dato de tipoPlan de char a String por motivos de correcto funcionamiento del programa. No sé porque motivo tuve problemas con el char al pedir el dato TipoPlan en el App. El programa se quedaba colgado. Cambiándolo a String se solucionó el problema.

Volví a cambiar de String a char el atributo tipoPlan. En la clase de hoy (06 de mayo) el profesor explicó el problema por el cual se quedaba colgado el programa.

Para los que no vinieron tienen que cambiar lo siguiente en la clase Leer:


System.in.skip(1000);

Busquen esa línea de código y modifiquen el 1000 por 1. Debería quedar así:

System.in.skip(1);


Otro cambio que hice fue en los if. Si bien recuerdan Java diferencia ente mayúsculas y minúsculas, por lo que tuve que agregar nuevas condiciones en los if de los métodos cambioPlan(), totalAlto() y totalBajo(). De este modo, si el usuario ingresa una A, B o C minúscula o mayúscula da lo mismo, el programa la reconocerá como corresponde.

Para poder llegar y copiar el código tienen que hacer clic donde dice "view plain" justo arriba de la línea número uno de cada código. Al hacer clic se abrirá una nueva ventana con el texto sin tratar y podrán copiarlo sin problemas

Clase plano

class Celular{

private int numeroTelefono, minutosBajo, minutosAlto;
private char tipoPlan;

Celular(int numeroTelefono, int minutosBajo, int minutosAlto, char tipoPlan){

this.numeroTelefono=numeroTelefono;
this.minutosBajo=minutosBajo;
this.minutosAlto=minutosAlto;
this.tipoPlan=tipoPlan;

}

void cambioPlan(){

/* Ojo con las comillas!
* Se utilizan comillas simples '' en este caso y no dobes ""
* Por el simple hecho de que estamos trabajando con char
* Si fuese String serian dobles ""
*/

if(tipoPlan=='A' || tipoPlan=='a'){

tipoPlan='B';

} else if(tipoPlan=='B' || tipoPlan=='b'){

tipoPlan='C';

} else {

tipoPlan='A';

}

}

int totalAlto(int minutos){

if(tipoPlan=="'A' || tipoPlan=='a'){

return 55*minutos;

} else if(tipoPlan=='B' || tipoPlan=='b'){

return 85*minutos;

} else {

return 130*minutos;

}

}

int totalBajo(int minutos){

if(tipoPlan=='A' || tipoPlan=='a'){

return 10*minutos;

} else if(tipoPlan=='B' || tipoPlan=='b'){

return 35*minutos;

} else {

return 55*minutos;

}

}

int pagoCelular(int minutosAlto, int minutosBajo){

int total;

total=totalAlto(minutosAlto)+totalBajo(minutosBajo);

return (int)((total*0.19)+total);

}

}


App


class AppCelular{

static public void main(String[]arg){

int numeroTelefono, minutosBajo, minutosAlto, habladoAlto, op;
char tipoPlan;

// OBJETO NUMERO UNO //
System.out.println("Numero Telefono: ");
numeroTelefono=Leer.datoInt();
System.out.println("Minutos Horario Bajo: ");
minutosBajo=Leer.datoInt();
System.out.println("Minutos Horario Alto: ");
minutosAlto=Leer.datoInt();
System.out.println("Tipo Plan:");
tipoPlan=Leer.datoChar();

Celular uno=new Celular(numeroTelefono, minutosBajo, minutosAlto, tipoPlan);

// OBJETO NUMERO DOS //
System.out.println("");
System.out.println("Numero Telefono: ");
numeroTelefono=Leer.datoInt();
System.out.println("Minutos Horario Bajo: ");
minutosBajo=Leer.datoInt();
System.out.println("Minutos Horario Alto: ");
minutosAlto=Leer.datoInt();
System.out.println("Tipo Plan: ");
tipoPlan=Leer.datoChar();

Celular dos=new Celular(numeroTelefono, minutosBajo, minutosAlto, tipoPlan);

// Pedimos que celular desea ver //
System.out.println("");
System.out.println("Que celular desea ver: ");
System.out.println("");
System.out.println("[1] Primer Celular");
System.out.println("[2] Segundo Celular");
op=Leer.datoInt();
System.out.println("");

// Se muestran los datos segun el celular seleccionado //
switch(op){

case 1:
System.out.println("Numero Telefono: "+uno.getNumeroTelefono());
System.out.println("Tipo Plan: "+uno.getTipoPlan());
System.out.println("Minutos Horario Alto: "+uno.getMinutosAlto()+" / Minutos Horario Bajo: "+uno.getMinutosBajo());
System.out.println("Pago Total Celular: $"+uno.pagoCelular(uno.getMinutosAlto(), uno.getMinutosBajo()));
System.out.println("");
System.out.println("Cambiar Plan a: - El plan actual es: "+uno.getTipoPlan()+" -");
tipoPlan=Leer.datoChar();
uno.setTipoPlan(tipoPlan); // Modificamos el plan
break;

case 2:
System.out.println("Numero Telefono: "+dos.getNumeroTelefono());
System.out.println("Tipo Plan: "+dos.getTipoPlan());
System.out.println("Minutos Horario Alto: "+dos.getMinutosAlto()+" / Minutos Horario Bajo: "+dos.getMinutosBajo());
System.out.println("Pago Total Celular: $"+dos.pagoCelular(dos.getMinutosAlto(), dos.getMinutosBajo()));
System.out.println("");
System.out.println("Cambiar Plan a: - El plan actual es: "+dos.getTipoPlan()+" -");
tipoPlan=Leer.datoChar();
dos.setTipoPlan(tipoPlan); // Modificamos el plan
break;

default: System.out.println("Opcion no valida");

}

// Se imprimen los resultados de los 2 celulares(objetos) //
System.out.println("[Celular 1] Numero: "+uno.getNumeroTelefono()+" / Plan: "+uno.getTipoPlan()+" / Mins. Horario Alto: "+
uno.getMinutosAlto()+" / Mins. Horario Bajo: "+uno.getMinutosBajo()+" / Pago Total Celular: $"+
uno.pagoCelular(uno.getMinutosAlto(), uno.getMinutosBajo()));
System.out.println("[Celular 2] Numero: "+dos.getNumeroTelefono()+" / Plan: "+dos.getTipoPlan()+" / Mins. Horario Alto: "+
dos.getMinutosAlto()+" / Mins. Horario Bajo: "+dos.getMinutosBajo()+" / Pago Total Celular: $"+
dos.pagoCelular(dos.getMinutosAlto(), dos.getMinutosBajo()));

}

}

Etiquetas Etiquetas: , | 0 comentarios

Bienvenidos

Bueno queridos compañeros, les doy la más dulce y gay bienvenida a el blog de nuestro curso el cual será estrictamente manejado por mí y por nadie más. Seré un estricto dictador el cual censurará todo comentario o contenido que no me agrade.

Dejando el webeo de lado, espero que este blog sea de mucha utilidad para todos y que TODOS aporten en él. ¿Cuál será el fin de este?: bueno lo principal es tenerlo como respaldo y ayuda para todos. También será usado como recordatorio, comunicación entre nosotros, etcétera.

Voy a tratar de mantenerlo bien actualizado y tenerlos al tanto de todo de lo que ocurre a nivel de nuestras clases (pruebas, material, guías de apoyo, ejercicios resueltos). Lo ideal sería que todos participaran, ya sea simplemente comentando en cada post del blog o mejor aún participando activamente en él colocando contenido.

Es bueno que nos ayudemos entre todos y esta es una gran opción para hacerlo.

Saludos.

Etiquetas Etiquetas: , | 1 comentarios