Guía de Ejercicios Java
Ejercicio 7: Desarrolle un método al que le pasamos el nombre y apellidos de una persona como un sólo String con el típico formato "apellidos, nombre". El método nos devolverá un nuevo formato: "nombre apellidos". Por ejemplo:
System.out.println (miMetodo ("Troncoso, Sergio.")); imprime
Sergio Troncoso R:
String miMetodo (String junto) { int coma= junto.indexOf (',');
String apellido= junto.substring (0, coma); String nombre= junto.substring (coma+2); return nombre + " " + apellido;
}
Nota2: el método indexOf devuelve la posición de un caracter dentro de un string.
Nota2: el método substring devuelve la parte de un string comprendida entre 2 valores. Si se coloca un sólo parámetro devuelve la parte del string comprendida entre el valor del parámetro y el final. Ej: substring(0,3) del string “computación” devuelve “comp” (la primera posición es 0). Ej2: para el mismo caso substring(8) devuelve “ión”.
Ejercicio 8: Dada una variable entera t que almacena el tiempo transcurrido del día en segundos, escriba las expresiones que permitan extraer las horas, minutos y segundos transcurridos del día (h, m, s). Ejemplo: t= 3723; h= 1; m= 2; s= 3; R: h= t / 3600; m= (t % 3600) / 60; s= t % 60;
Ejercicio 9: Escriba un método al que le pasemos dos números reales y devuelva el de mayor valor absoluto.
R:
double maxAbs (double x, double y){
return (Math.max (Math.abs (x), Math.abs (y)));
}
Nota:1 El método max devuelve el mayor entre 2 valores. Nota2: El método abs devuelve el valor absoluto de un número.
Ejercicio 10: Escriba un método que devuelva si un material flota en el agua o no, a partir de su masa y su volumen. Utilice un método auxiliar que calcule la densidad del material.
R:
public boolean flota (double masa, double volumen){ if densidad(masa,volumen)<1{
else{
return(“no flota”); }
}
private double densidad (double masa, double volumen){ return (masa / volumen);
}
Ejercicio 11: Dado el siguiente algoritmo, escribir el programa que debería resultar: 1. Escribir en pantalla "Ingrese el valor para A?"
2. Pedir un valor real
3. Si ingresa un 0 escribir en pantalla "No puede dividir por 0" y terminar el programa 4. Escribir en pantalla "Ingrese el valor para b?"
5. Pedir otro valor real
6. Dividir el valor obtenido en 5 por el valor obtenido en 2
7. Entregar en pantalla "El valor de la incógnita es = " y el valor obtenido en 6 R:
static public void main (String args[]) { Console C = new Console();
c.println(“Ingrese el valor para A?”); double A = c.readDouble();
if (A == 0) {
c.println(“No puede dividir por 0”); } else {
c.println(“Ingrese el valor para b?”); double b = c.readDouble();
double x = b / A;
c.println(“El valor de la incógnita es = “ + x); }
}
Ejercicio 12: Escriba la clase Circulo, que recibe como parámetro el radio de la circunferencia y que contiene los siguientes métodos:
public double area(){...} public double perimetro(){...} R:
class Circulo{
public double area(double radio){ return (3.14*radio*radio); }
public double perimetro(double radio){ return (2*3.14*radio);
}
}
Ejercicio 13: Escriba la clase Dado, que recibe como parámetro la cantidad de caras que tendrá el dado y contiene el siguiente método:
R:
class Dado{ }
public int tirar(int caras){
return (Math.random()*caras+1); }
Nota: Math.random genera un número aleatorio entre >0 y <1.
Ejercicio 14: A continuación se presenta el típico programa del Cachipún. El código para un juego es el siguiente:
class cachip {
// Un método que calcule un número aleatorio genérico static int aleatorio () {
double r = Math.random(); int res = (int) (r*3+1); return (res);
}
static public void main (String[] args) { Console c = new Console();
c.println("Significado: 1=papel, 2=tijeras, 3=piedra"); // Inicialización de variables de juego
int jugador = 0; int computador = 0;
c.println("Ingrese su opción (1)(2)(3)"); jugador = c.readInt();
computador = aleatorio();
c.println("El computador juega " + computador); if ( (jugador == 1 && computador == 3)
|| jugador > computador) {
c.println("Gana el Jugador"); }
else if ( (jugador == 3 && computador == 1) || jugador < computador) { c.println("Gana el Computador"); } } }
Modifique el código anterior para jugar una cantidad de veces determinada por el usuario y que al final muestre quién ganó en el acumulado de juegos.
R:
class cachip {
// Un método que calcule un número aleatorio genérico static int aleatorio () {
double r = Math.random(); System.out.println(r); int res = (int) (r*3+1); System.out.println(res); return ((res));
}
static public void main (String[] args) { Console c = new Console();
c.println("Significado: 1=papel, 2=tijeras, 3=piedra"); // Inicialización de variables de juego
int computador = 0;
int contadorJugador = 0, contadorComputador = 0; int veces;
int numero=0;
c.println("¿Cuántas veces desea jugar?"); veces=c.readInt(); while (numero<veces) { c.println("Ingrese su opción (1)(2)(3)"); jugador = c.readInt(); computador = aleatorio(); c.println("ran= "+computador);
c.println("computador juega " + computador); if ( (jugador == 1 && computador == 3)
|| jugador > computador) contadorJugador ++;
else if ( (jugador == 3 && computador == 1) || jugador < computador) contadorComputador ++; // Resultado Acumulado c.println("Puntajes:"); c.println("Persona " + contadorJugador); c.println("Computador " + contadorComputador); numero=numero+1; } } }
Ejercicio 15: Escribir un programa que simule un cajero automático, estableciendo el diálogo indicado en el siguiente ejemplo:
¿Cuánto dinero necesita? 39000
Retire los siguientes billetes del dispensador: 1 de $20.000
1 de $10.000 1 de $5.000 2 de $2.000
- Preguntar cuanto dinero se necesita
- Guardar el valor (cantidad) ingresado en una variable - Mostrar el mensaje "Retire los siguientes billetes:"
- Calcular (division) el numero de billetes de 20000 que se necesitan paraentregar esa suma (la cantidad)
- Mostrar el numero de billetes de 20000
- Calcular lo que falta por repartir(resto) luego de repartir billetes de 20000 y eso entregarlo (dividir) en billetes de 10000
- Mostrar el numero de billetes de 10000
- Calcular lo que falta por repartir(resto) luego de repartir lo que quedaba en billetes de 10000 y eso entregarlo (dividir) en billetes de 5000
- Mostrar el numero de billetes de 5000
- Calcular lo que falta por repartir(resto) luego de repartir lo que quedaba en billetes de 5000 y eso entregarlo (dividir) en billetes de 2000
- Mostrar el numero de billetes de 2000
- Calcular lo que falta por repartir(resto) luego de repartir lo que quedaba en billetes de 2000 y eso entregarlo (dividir) en billetes de 1000
Nota: el usuario sólo ingresa una cantidad de dinero en "miles" (es decir no hay 500 ni 100, ni 10, ni 5 pesos. No, tampoco 1 peso).
Posteriormente repita la operación hasta que el usuario lo determine (ciclo do-while). R:
class cajero {
static public void main (String args[]) { // Declaraciones
Console C = new Console();
C.print("Cuanto dinero necesita? "); int d =C.readInt();
C.println("Retire los siguientes billetes:"); C.println( d/20000 + " de $20.000"); d=d%20000; C.println( d/10000 + " de $10.000"); d=d%10000; C.println( d/5000 + " de $5.000"); d=d%5000; C.println( d/2000 + " de $2.000"); d=d%2000; C.println( d/1000 + " de $1.000"); } } 3b) En un ciclo: class cajero {
static public void main (String args[]) { // Declaraciones
Console C = new Console(); char op;
do {
C.print("Cuanto dinero necesita? "); int d =C.readInt();
C.println("Retire los siguientes billetes:"); C.println( d/20000 + " de $20.000"); d=d%20000; C.println( d/10000 + " de $10.000"); d=d%10000; C.println( d/5000 + " de $5.000"); d=d%5000; C.println( d/2000 + " de $2.000"); d=d%2000; C.println( d/1000 + " de $1.000");
C.println("Desea hacer otra operación s/n?"); op =C.readChar();
}
while (op=='s'); }