Ejercicios Bsicos con Estructura Secuencial
Ejercicios Bsicos Resueltos con estructura secuencial
1. Programa Java que lea dos nmeros enteros por teclado y los muestre por pantalla.
import java.util.*;
public class Main {
public static void main(String[] args){
//declaracin de variables
int n1, n2;
Scanner sc = new Scanner(System.in);
//leer el primer nmero
System.out.println("Introduce un nmero entero: ");
n1 = sc.nextInt(); //lee un entero por teclado
//leer el segundo nmero
System.out.println("Introduce otro nmero entero: ");
n2 = sc.nextInt(); //lee un entero por teclado
//mostrar resultado
System.out.println("Ha introducido los nmeros: " + n1 + " y " + n2);
Programa que lea una cantidad de grados centgrados y la pase a grados Fahrenheit.
La frmula correspondiente para pasar de grados centgrados a fahrenheit es:
F = 32 + ( 9 * C / 5)
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double gradosC, gradosF;
System.out.println("Introduce grados Centgrados:");
gradosC = sc.nextDouble();
gradosF = 32 + (9 * gradosC / 5);
System.out.println(gradosC +" C = " + gradosF + " F");
}
Ejercicio 5. Programa que lee por teclado el valor del radio de una circunferencia y calcula y muestra por
pantalla la longitud y el rea de la circunferencia.
Longitud de la circunferencia = 2*PI*Radio, Area de la circunferencia = PI*Radio^2
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double radio, longitud, area;
System.out.println("Introduce radio de la circunferencia:");
radio = sc.nextDouble();
longitud = 2 * Math.PI * radio;
area = Math.PI * Math.pow(radio, 2);
System.out.println("Longitud de la circunferencia -> " + longitud);
System.out.println("Area de la circunferencia -> " + area);
Ejercicio 6. Programa que pase una velocidad en Km/h a m/s. La velocidad se lee por teclado.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double velocidad;
System.out.println("Introduzca velocidad en Km/h: ");
velocidad = sc.nextDouble();
System.out.println(velocidad + " Km/h -> " + velocidad*1000/3600 + " m/s");
}
Ejercicio 7. Programa lea la longitud de los catetos de un tringulo rectngulo y calcule la longitud de la
hipotenusa segn el teorema de Pitgoras.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double cateto1, cateto2;
System.out.print("Introduzca longitud del primer cateto: ");
cateto1 = sc.nextDouble();
System.out.print("Introduzca longitud del segundo cateto: ");
cateto2 = sc.nextDouble();
System.out.println("Hipotenusa -> " + Math.sqrt(Math.pow(cateto1,2)+ Math.pow(cateto2, 2)));
Ejercicio 8:
Programa que tome como dato de entrada un nmero que corresponde a la longitud del radio una
esfera y nos calcula y escribe el volumen de la esfera que se corresponden con dicho radio.
La frmula para calcular el volumen de la esfera es
v = (4/3)*PI*r^3
/*
* Programa que calcula el volumen de una esfera
*/
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double radio, volumen;
System.out.print("Introduzca radio de la esfera: ");
radio = sc.nextDouble();
System.out.println("Volumen de la esfera de radio " + radio + " = "
+ (4.0/3)* Math.PI * Math.pow(radio, 3));
Programa Java que calcule el rea de un tringulo en funcin de las longitudes de sus lados (a, b, c),
segn la siguiente frmula:
Area = RaizCuadrada(p*(p-a)*(p-b)*(p-c))
donde p = (a+b+c)/2
Para calcular la raz cuadrada se utiliza el mtodo Math.sqrt()
/*
* Programa que calcule el rea de un tringulo en funcin de las longitudes de sus lados (a, b, c)
* segn la siguiente frmula: area=raiz2(p(p-a)(p-b)(p-c)) donde p = (a+b+c)/2
*/
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double a,b,c,p;
System.out.print("Introduzca longitud del primer lado del tringulo: ");
a = sc.nextDouble();
System.out.print("Introduzca longitud del segundo lado del tringulo: ");
b = sc.nextDouble();
System.out.print("Introduzca longitud del tercer lado del tringulo: ");
c = sc.nextDouble();
p = (a+b+c)/2;
System.out.println("Area -> " + Math.sqrt(p*(p-a)*(p-b)*(p-c)));
}
Programa Java que lea un nmero entero de 3 cifras y muestre por separado las cifras del nmero.
/*
* Programa que lea un nmero de 3 cifras y muestre por pantalla las cifras del nmero
*/
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N;
System.out.print("Introduzca valor de N: ");
N = sc.nextInt(); //supondremos que el nmero introducido tiene 3 cifras
System.out.println("Primera cifra de " + N + " -> " + (N/100));
System.out.println("Cifra central de " + N + " -> " + (N/10)%10);
System.out.println("ltima cifra de " + N + " -> " + (N%10));
Recuerda que la divisin entre enteros da como resultado la parte entera de la divisin (sin decimales).
Si por ejemplo N = 123 la operacin N/10 da como resultado 12 y no 12.3
Recuerda que el operador % obtiene el resto de la divisin.
Programa que lea un nmero entero N de 5 cifras y muestre sus cifras igual que en el ejemplo.
Por ejemplo para un nmero N = 12345 La salida debe ser:
12
123
1234
12345
/*
* N = 12345 La salida debe ser:
*1
* 12
* 123
* 1234
* 12345
*/
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N;
System.out.print("Introduzca valor de N: ");
N = sc.nextInt(); //supondremos que el nmero introducido tiene 5 cifras
System.out.println(N/10000);
System.out.println(N/1000);
System.out.println(N/100);
System.out.println(N/10);
System.out.println(N);
Programa Java que lea un nmero entero N de 5 cifras y muestre sus cifras igual que en el ejemplo.
Por ejemplo para un nmero N = 12345 La salida debe ser:
45
345
2345
12345
/*
* N = 12345 La salida debe ser:
*5
* 45
* 345
* 2345
* 12345
*/
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N;
System.out.print("Introduzca valor de N: ");
N = sc.nextInt(); //supondremos que el nmero introducido tiene 5 cifras
System.out.println(N%10);
System.out.printf("%02d %n",N%100);
System.out.printf("%03d %n",N%1000);
System.out.printf("%04d %n",N%10000);
System.out.printf("%05d %n",N);
Programa que pida por teclado la fecha de nacimiento de una persona (dia, mes, ao) y calcule su
nmero de la suerte.
El nmero de la suerte se calcula sumando el da, mes y ao de la fecha de nacimiento y a continuacin
sumando las cifras obtenidas en la suma.
Por ejemplo:
Si la fecha de nacimiento es 12/07/1980
Calculamos el nmero de la suerte as: 12+7+1980 = 1999 1+9+9+9 = 28
Nmero de la suerte: 28
/*
* Programa que calcula el nmero de la suerte
*/
import java.util.*;
public class Secuenciales2_13 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int dia, mes, ao, suerte, suma, cifra1, cifra2, cifra3, cifra4;
System.out.println("Introduzca fecha de nacimiento");
System.out.print("da: ");
dia = sc.nextInt();
System.out.print("mes: ");
mes = sc.nextInt();
System.out.print("ao: ");
ao = sc.nextInt();
suma = dia + mes + ao;
cifra1 = suma/1000; //obtiene la primera cifra
cifra2 = suma/100%10; //obtiene la segunda cifra
cifra3 = suma/10%10; //obtiene la tercera cifra
cifra4 = suma%10; //obtiene la ltima cifra
suerte = cifra1 + cifra2 + cifra3 + cifra4;
System.out.println("Su nmero de la suerte es: " + suerte);
Ejercicios Bsicos con Estructura Condicional
1. Programa Java que lea un nmero entero por teclado y calcule si es par o impar.
Podemos saber si un nmero es par si el resto de dividir el nmero entre 2 es igual a cero. En caso
contrario el nmero es impar
El operador Java que calcula el resto de la divisin entre dos nmeros enteros o no es el operador %
El programa que calcula si un nmero entero es par o impar es el siguiente:
import java.util.*;
public class Condicional1_1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N;
System.out.print("Introduzca Nmero entero: ");
N = sc.nextInt();
if(N%2==0)
System.out.println("Par");
else
System.out.println("Impar");
2. Programa que lea un nmero entero y muestre si el nmero es mltiplo de 10.
Podemos comprobar si un nmero entero es mltiplo de 10 si al dividirlo por 10 es resto de esta divisin
es cero.
/* Programa que lea un nmero entero y muestre si el nmero es mltiplo de 10 */
import java.util.*;
public class Condicional1_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N;
System.out.print("Nmero entero: ");
N = sc.nextInt();
if(N%10==0)
System.out.println("Es mltiplo de 10");
else
System.out.println("No es mltiplo de 10");
3. Programa que lea un carcter por teclado y compruebe si es una letra mayscula
/* condicional1_3
* Programa que lea un carcter por teclado y compruebe si es una letra mayscula
*/
import java.io.*;
import java.util.*;
public class condicional1_3 {
public static void main(String[] args) throws IOException{
Scanner sc = new Scanner(System.in);
char car, car1;
System.out.print("Introduzca un carcter: ");
car = (char)System.in.read(); //lee un solo caracter
if(Character.isUpperCase(car)) //utilizamos el mtodo isUpperCase de la clase Character
System.out.println("Es una letra mayscula");
else
System.out.println("No es una letra mayscula");
Forma alternativa de comprobar si un carcter es una letra mayscula sin utilizar el mtodo
isUpperCase, en este caso comparando directamente con los caracteres A y Z
if(car>='A' && car <='Z')
System.out.println("Es una letra mayscula");
else
System.out.println("No es una letra mayscula");
Ejercicio 4: Programa que lea dos caracteres y compruebe si son iguales.
/*
* Ejemplo bsico java
* Programa con estructura condicional
* Programa que lea dos caracteres y compruebe
* si son iguales.
*/
import java.io.*;
public class condicional1_5 {
public static void main(String[] args) throws IOException {
char car1, car2;
System.out.print("Introduzca primer carcter: ");
car1 = (char)System.in.read(); //lee un carcter
System.in.read(); //saltar el intro que ha quedado en el buffer
System.out.print("Introduzca segundo carcter: ");
car2 = (char)System.in.read(); //lee el segundo carcter
if(car1 == car2)
System.out.println("Son iguales");
else
System.out.println("No son iguales");
Una forma alternativa de hacer este programa es creando dos objetos Character a partir de los
caracteres que se han ledo y compararlos utilizando el mtodo equals
import java.io.*;
public class condicional1_5 {
public static void main(String[] args) throws IOException {
char car1, car2;
System.out.print("Introduzca primer carcter: ");
car1 = (char)System.in.read(); //lee un carcter
System.in.read(); //saltar el intro que ha quedado en el buffer
System.out.print("Introduzca segundo carcter: ");
car2 = (char)System.in.read(); //lee el segundo carcter
Character c1 = new Character(car1);
Character c2 = new Character(car2);
if(c1.equals(c2)) //comparamos dos objetos Character mediante el mtodo equals
System.out.println("Son iguales");
else
System.out.println("No son iguales");
}
Ejercicio 5: Programa java que lea dos caracteres por teclado y compruebe si los dos son letras
minsculas
/* Ejemplo bsico java de programa con estructura condicional
* Programa que lea dos caracteres y compruebe si los dos son letras minsculas
*/
import java.io.*;
public class condicional1_6 {
public static void main(String[] args) throws IOException {
char car1, car2;
System.out.println("Introduzca primer carcter: ");
car1 = (char)System.in.read(); //lee un carcter
System.in.read(); //saltar el intro que ha quedado
System.out.println("Introduzca segundo carcter: ");
car2 = (char)System.in.read(); //lee el segundo carcter
if(Character.isLowerCase(car1)){ //utilizamos el mtodo isLowerCase de la clase Character
if(Character.isLowerCase(car2))
System.out.println("Los dos son letras minsculas");
else
System.out.println("El primero es una letra minscula pero el segundo no");
else{
if(Character.isLowerCase(car2))
System.out.println("El segundo es una letra minscula pero el primero no");
else
System.out.println("Ninguno es una letra minscula");
}
Una forma alternativa de resolver este ejercicio es comparando directamente las dos variables con las
letras minsculas
if(car1>='a' && car1<='z'){
if(car2>='a' && car2<='z')
System.out.println("Los dos son letras minsculas");
else
System.out.println("El primero es una letra minscula pero el segundo no");
else{
if(car2>='a' && car2<='z')
System.out.println("El segundo es una letra minscula pero el primero no");
else
System.out.println("Ninguno es una letra minscula");
Ejercicio 6: Programa java que lea un carcter por teclado y compruebe si es un dgito numrico (cifra
entre 0 y 9).
Vamos a escribir dos soluciones a este ejercicio.
La primera consiste en comprobar si el carcter es un dgito mediante el mtodo isDigit de la clase
Character. Este mtodo devuelve true si el carcter que se le pasa como parmetro es una cifra entre 0
y 9:
/*
* Ejemplo de programa con estructura condicional
* Programa que lea un carcter por teclado y compruebe si es un nmero
*/
import java.io.*;
public class condicional1_7 {
public static void main(String[] args) throws IOException {
char car1;
System.out.print("Introduzca carcter: ");
car1 = (char)System.in.read(); //lee un carcter
if(Character.isDigit(car1)) //utilizamos el mtodo isDigit de la clase Character
System.out.println("Es un nmero");
else
System.out.println("No es un nmero");
el carcter 9.
// Versin alternativa comparando con
// los caracteres '0' ... '9'
if(car1>='0' && car1<='9')
System.out.println("Es un nmero");
else
System.out.println("No es un nmero")
Ejercicio 7: Programa que lea dos nmeros por teclado y muestre el resultado de la divisin del primer
nmero por el segundo. Se debe comprobar que el divisor no puede ser cero.
/*
* Ejemplo de programa con estructura condicional
* Programa que lea dos nmeros por teclado y muestre el resultado
* de la divisin del primero por el segundo.
* Se comprueba que el divisor es distinto de cero.
*/
import java.util.*;
public class condicional1_8 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double dividendo, divisor;
System.out.print("Introduzca el dividendo: ");
dividendo = sc.nextDouble();
System.out.print("Introduzca el divisor: ");
divisor = sc.nextDouble();
if(divisor==0)
System.out.println("No se puede dividir por cero");
else{
System.out.println(dividendo + " / " + divisor + " = " + dividendo/divisor);
System.out.printf("%.2f / %.2f = %.2f %n" , dividendo, divisor , dividendo/divisor);
Calcular el mayor de tres nmeros enteros en Java.
El programa lee por teclado tres nmeros enteros y calcula y muestra el mayor de los tres.
/*
* Programa que lee tres nmeros distintos
* y nos dice cul de ellos es el mayor
*/
import java.util.*;
public class MayorDeTres {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n1, n2, n3;
System.out.print("Introduzca primer nmero: ");
n1 = sc.nextInt();
System.out.print("Introduzca segundo nmero: ");
n2 = sc.nextInt();
System.out.print("Introduzca tercer nmero: ");
n3 = sc.nextInt();
if(n1 > n2)
if(n1>n3)
System.out.println("El mayor es: " + n1);
else
System.out.println("el mayor es: " + n3);
else if(n2>n3)
System.out.println("el mayor es: " + n2);
else
System.out.println("el mayor es: " + n3);
Ejercicio 9:
Programa que lea por teclado tres nmeros enteros H, M, S correspondientes a hora, minutos y
segundos respectivamente, y comprueba si la hora que indican es una hora vlida.
Supondremos que se leemos una hora en modo 24 Horas, es decir, el valor vlido para las horas ser
mayor o igual que cero y menor que 24.
El valor vlido para los minutos y segundos estar comprendido entre 0 y 59 ambos incluidos
/*
* Programa java que lea tres nmeros enteros H, M, S que contienen hora, minutos y
* segundos respectivamente, y comprueba si la hora que indican es una hora vlida.
*/
import java.util.*;
public class condicional1_16 {
public static void main(String[] args) {
int H,M,S;
Scanner sc = new Scanner(System.in);
System.out.print("Introduzca hora: ");
H = sc.nextInt();
System.out.print("Introduzca minutos: ");
M = sc.nextInt();
System.out.print("Introduzca segundos: ");
S = sc.nextInt();
if(H>=0 && H<24 && M>=0 && M<60 && S>=0 && S<60)
System.out.println("Hora correcta");
else
System.out.println("Hora incorrecta");
La instruccin que comprueba si la hora leda por teclado es correcta es:
if(H>=0 && H<24 && M>=0 && M<60 && S>=0 && S<60)
Esta condicin da como resultado true cuando la hora es mayor o igual a 0 y menor que 24, los minutos
son mayores o iguales a 0 y menores que 60 y los segundos son mayores 0 iguales a cero y menores a
60.
Ejercicio 10:
Programa que lea una variable entera mes y compruebe si el valor corresponde a un mes de 30 das, de
31 o de 28. Supondremos que febrero tiene 28 das. Se mostrar adems el nombre del mes. Se debe
comprobar que el valor introducido est comprendido entre 1 y 12.
/*
* Programa java que lea una variable entera mes y compruebe si el valor corresponde
* a un mes de 30 das. Se debe comprobar que el valor introducido est
* comprendido entre 1 y 12
*/
import java.util.*;
public class condicional1_17 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int mes;
System.out.print("Introduzca nmero de mes: ");
mes = sc.nextInt();
if(mes < 1 || mes > 12) //se comprueba que el valor del mes es correcto
System.out.println("Mes incorrecto");
else{ //si el mes es correcto
switch(mes){ //se muestra el nombre mediante una instruccin switch
case 1: System.out.print("Enero");
break;
case 2: System.out.print("Febrero");
break;
case 3: System.out.print("Marzo");
break;
case 4: System.out.print("Abril");
break;
case 5: System.out.print("Mayo");
break;
case 6: System.out.print("Junio");
break;
case 7: System.out.print("Julio");
break;
case 8: System.out.print("Agosto");
break;
case 9: System.out.print("Septiembre");
break;
case 10: System.out.print("Octubre");
break;
case 11: System.out.print("Noviembre");
break;
case 12: System.out.print("Diciembre");
break;
// mostrar si es un mes de 30, 31 0 28 das
if(mes == 4 || mes == 6 || mes == 9 || mes == 11)
System.out.println(" es un mes de 30 das");
else if(mes == 2)
System.out.println(" es un mes de 28 das");
else
System.out.println(" es un mes de 31 das");
}
Ejercicios Bsicos con Estructura Iterativa o Repetitiva
Relacin N 1: Ejercicios 1, 2, 3, 4, 5 y 6
Ejercicios bsicos que utilizan la estructura repetitiva.
Se trata de mostrar los nmeros desde el 1 hasta el 100 utilizando las instrucciones repetitivas while, do
while y for.
1. Ejemplo de uso de while: Programa Java que muestre los nmeros del 1 al 100 utilizando la
instruccin while.
/*
* Ejercicios bsicos java con estructura iterativa o repetitiva
* Mostrar los nmeros del 1 al 100
* utilizando un bucle while
*/
public class Main {
public static void main(String[] args) {
System.out.println("Numeros del 1 al 100: ");
int i=1;
while(i<=100) {
System.out.println(i);
i++;
2. Ejemplo de uso de do-while. Programa Java que muestre los nmeros del 1 al 100 utilizando la
instruccin do..while.
/*
* Ejercicios bsicos java con estructura iterativa o repetitiva
* Mostrar los nmeros del 1 al 100 utilizando un bucle do while
*/
public class Main {
public static void main(String[] args) {
int i = 1;
System.out.println("Numeros del 1 al 100: ");
do{
System.out.println(i);
i++;
}while(i<=100);
3. Ejemplo de uso de for. Programa Java que muestre los nmeros del 1 al 100 utilizando la instruccin
for.
/*
* Ejercicios bsicos java con estructura iterativa o repetitiva
* Mostrar los nmeros del 1 al 100 utilizando un bucle for
*/
public class Repetitiva1_3 {
public static void main(String[] args) {
System.out.println("Numeros del 1 al 100: ");
for(int i = 1; i<=100;i++)
System.out.println(i);
4. Ejemplo de uso de while. Programa Java que muestre los nmeros del 100 al 1 utilizando la
instruccin while.
/*
* Ejercicios bsicos java con estructura iterativa o repetitiva
* Mostrar los nmeros del 100 al 1 utilizando un bucle while
*/
public class Main {
public static void main(String[] args) {
System.out.println("Numeros del 100 al 1: ");
int i=100;
while(i>=1)
{
System.out.println(i);
i--;
5. Ejemplo de uso de do-while. Programa Java que muestre los nmeros del 100 al 1 utilizando la
instruccin do..while.
/*
* Ejercicios bsicos java con estructura iterativa o repetitiva
* Mostrar los nmeros del 100 al 1 utilizando un bucle do while
*/
public class Main {
public static void main(String[] args) {
int i = 100;
System.out.println("Numeros del 100 al 1: ");
do{
System.out.println(i);
i--;
}while(i>=1);
6. Ejemplo de for. Programa Java que muestre los nmeros del 100 al 1 utilizando la instruccin for.
/*
* Ejercicios bsicos java con estructura iterativa o repetitiva
* Mostrar los nmeros del 100 al 1 utilizando un bucle for
*/
public class Repetitiva1_6 {
public static void main(String[] args) {
System.out.println("Numeros del 100 al 1: ");
for(int i=100;i>=1;i--)
System.out.println(i);
}
Ejercicios Generales
En esta entrada vamos a explicar dos mtodos para realizar el intercambio de valores entre dos
variables.
El primer mtodo de intercambio utiliza una variable auxiliar y el segundo mtodo realiza el intercambio
de valores sin utilizar variable auxiliar.
Intercambio de valores entre dos variables utilizando una variable auxiliar.
Programa para intercambiar el valor de dos variables. Los valores iniciales se leen por teclado.
Por ejemplo, suponiendo que las variables se llaman A y B, si A contiene 3 y B contiene 5, despus del
intercambio A contendr 5 y B 3.
En este ejemplo, para intercambiar el valor entre dos variables utilizaremos una avariable auxiliar donde
guardar el valor de una de ellas. Despus veremos la forma de hacerlo sin usar una variable auxiliar para
el intercambio.
Las instrucciones a realizar son:
AUX = A;
A = B;
B = AUX;
Programa completo:
/*
* Programa que lea dos variables
* numricas A y B e
* intercambie sus contenidos.
*/
import java.util.*;
public class Secuenciales2_5 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int A, B, AUX;
System.out.print("Introduzca valor de A: ");
A = sc.nextInt();
System.out.print("Introduzca Valor de B: ");
B = sc.nextInt();
System.out.println("Valores iniciales: A = " + A + " B = " + B);
//instrucciones para hacer el intercambio
//se utiliza una variable auxiliar
AUX = A;
A = B;
B = AUX;
System.out.println("Valores intercambiados: A = " + A + " B = " + B);
Intercambio de valores entre dos variables sin utilizar variable auxiliar.
Tambin se puede intercambiar el valor de dos variables sin utilizar una variable auxiliar.
En ese caso se resuelve utilizando aritmtica bsica:
A = A + B;
B = A - B;
A = A - B;
Si por ejemplo A = 5 y B = 3
A=5+3=8
B=8-3=5
A=8-5=3
Programa completo:
/*
* Programa que intercambie dos variables sin auxiliar
*/
import java.util.*;
public class Secuenciales2_5 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int A, B, AUX;
System.out.print("Introduzca valor de A: ");
A = sc.nextInt();
System.out.print("Introduzca Valor de B: ");
B = sc.nextInt();
System.out.println("Valores iniciales: A = " + A + " B = " + B);
//instrucciones para hacer el intercambio
//sin utilizar una variable auxiliar
A = A + B;
B = A - B;
A = A - B;
System.out.println("Valores intercambiados: A = " + A + " B = " + B);
Decimal a binario en java
/**
* Programa que pasa un nmero
* de decimal a binario
* @author Enrique Garca
*/
public class Main{
public static void main(String[] args) {
int numero, exp, digito;
double binario;
Scanner sc = new Scanner(System.in);
do{
System.out.print("Introduce un numero entero >= 0: ");
numero = sc.nextInt();
}while(numero<0);
exp=0;
binario=0;
while(numero!=0){
digito = numero % 2;
binario = binario + digito * Math.pow(10, exp);
exp++;
numero = numero/2;
System.out.printf("Binario: %.0f %n", binario);
Pasar un nmero de binario a decimal en Java
/*
* Programa Java que convierte un nmero binario a decimal
*/
import java.util.Scanner;
public class BinarioDecimal {
public static void main(String[] args) {
long numero, aux, digito, decimal;
int exponente;
boolean esBinario;
Scanner sc = new Scanner(System.in);
//Leer un nmero por teclado y comprobar que es binario
do {
System.out.print("Introduce un numero binario: ");
numero = sc.nextLong();
//comprobamos que sea un nmero binario es decir
//que este formado solo por ceros y unos
esBinario = true;
aux = numero;
while (aux != 0) {
digito = aux % 10; //ltima cifra del nmeros
if (digito != 0 && digito != 1) { //si no es 0 1
esBinario = false; //no es un nmero binario
aux = aux / 10; //quitamos la ltima cifra para repetir el proceso
} while (!esBinario); //se vuelve a pedir si no es binario
//proceso para pasar de binario a decimal
exponente = 0;
decimal = 0; //ser el equivalente en base decimal
while (numero != 0) {
//se toma la ltima cifra
digito = numero % 10;
//se multiplica por la potencia de 2 correspondiente y se suma al nmero
decimal = decimal + digito * (int) Math.pow(2, exponente);
//se aumenta el exponente
exponente++;
//se quita la ltima cifra para repetir el proceso
numero = numero / 10;
System.out.println("Decimal: " + decimal);
}
Convertir a nmeros romanos en Java
//Programa Java que lee un nmero y lo convierte a nmeros romanos
import java.util.Scanner;
public class NumerosRomanos {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N;
do {
System.out.print("Introduce un nmero entre 1 y 3999: ");
N = sc.nextInt();
} while (N < 1 || N > 3999);
System.out.println(N + " en numeros romanos -> " + convertirANumerosRomanos(N));
//mtodo para pasar a nmeros romanos
public static String convertirANumerosRomanos(int numero) {
int i, miles, centenas, decenas, unidades;
String romano = "";
//obtenemos cada cifra del nmero
miles = numero / 1000;
centenas = numero / 100 % 10;
decenas = numero / 10 % 10;
unidades = numero % 10;
//millar
for (i = 1; i <= miles; i++) {
romano = romano + "M";
//centenas
if (centenas == 9) {
romano = romano + "CM";
} else if (centenas >= 5) {
romano = romano + "D";
for (i = 6; i <= centenas; i++) {
romano = romano + "C";
} else if (centenas == 4) {
romano = romano + "CD";
} else {
for (i = 1; i <= centenas; i++) {
romano = romano + "C";
//decenas
if (decenas == 9) {
romano = romano + "XC";
} else if (decenas >= 5) {
romano = romano + "L";
for (i = 6; i <= decenas; i++) {
romano = romano + "X";
} else if (decenas == 4) {
romano = romano + "XL";
} else {
for (i = 1; i <= decenas; i++) {
romano = romano + "X";
//unidades
if (unidades == 9) {
romano = romano + "IX";
} else if (unidades >= 5) {
romano = romano + "V";
for (i = 6; i <= unidades; i++) {
romano = romano + "I";
} else if (unidades == 4) {
romano = romano + "IV";
} else {
for (i = 1; i <= unidades; i++) {
romano = romano + "I";
return romano;
}
Ejercicios con Arrays
1. Calcular la media de una serie de nmeros que se leen por teclado.
Programa Java que lea por teclado 10 nmeros enteros y los guarde en un array. A continuacin calcula
y muestra por separado la media de los valores positivos y la de los valores negativos.
/*
* Programa que lea por teclado 10 nmeros enteros y los guarde en un array.
* A continuacin calcula y muestra la media de los valores positivos y la de los valores negativos.
*/
import java.util.*;
public class Media1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i;
int pos = 0, neg = 0; //contadores de los nmeros positivos y negativos
int[] numeros = new int[10]; //array que contendr los nmeros ledos por teclado
double sumaPos = 0, sumaNeg = 0; //acumuladores para las sumas de positivos y negativos
//lectura de datos y llenar el array
System.out.println("Lectura de los elementos del array: ");
for (i = 0; i < 10; i++) {
System.out.print("numeros[" + i + "]= ");
numeros[i]=sc.nextInt();
//recorrer el array para sumar por separado los nmeros positivos
// y los negativos
for (i = 0; i < 10; i++) {
if (numeros[i] > 0){ //sumar positivos
sumaPos += numeros[i];
pos++;
} else if (numeros[i] < 0){ //sumar negativos
sumaNeg += numeros[i];
neg++;
//Calcular y mostrar las medias
if (pos != 0) {
System.out.println("Media de los valores positivos: " + sumaPos / pos);
} else {
System.out.println("No ha introducido numeros positivos");
if (neg != 0) {
System.out.println("Media de los valores negativos: " + sumaNeg / neg);
} else {
System.out.println("No ha introducido numeros negativos");
2. Programa Java que lea 10 nmeros enteros por teclado y los guarde en un array. Calcula y muestra la
media de los nmeros que estn en las posiciones pares del array.
Considera la primera posicin del array (posicin 0) como par.
/*
* Leer 10 nmeros enteros y guardarlos
* en un array. Calcular la media de los
* que estn en las posiciones pares.
*/
import java.util.*;
public class Arrays1_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i;
int[] numeros = new int[10];
double media = 0;
//lectura de datos y llenar el array
System.out.println("Lectura de los elementos del array: ");
for (i = 0; i < 10; i++) {
System.out.print("numeros[" + i + "]= ");
numeros[i] = sc.nextInt();
//Recorrer el array y calcular la media
for (i = 0; i < 10; i++) {
if (i % 2 == 0){ //si la posicin actual es par
media = media + numeros[i]; //se suma el valor de esa posicin
//Calcular y mostrar la media
System.out.println("Media de los valores que se encuentran en posiciones pares: "+ media/5);
3. Programa que lee por teclado la nota de los alumnos de una clase y calcula la nota media del grupo.
Tambin muestra los alumnos con notas superiores a la media. El nmero de alumnos se lee por
teclado.
Este programa utiliza un array de elementos de tipo double que contendr las notas de los alumnos.
El tamao del array ser el nmero de alumnos de la clase, por lo tanto primero se pedir por teclado el
nmero de alumnos y a continuacin se crear el array.
Se realizan 3 recorridos sobre el array, el primero para asignar a cada elemento las notas introducidas
por teclado, el segundo para sumarlas y calcular la media y el tercero para mostrar los alumnos con
notas superiores a la media.
import java.util.*;
public class MediaDeLaClase {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int numAlum, i;
double suma = 0, media;
//Lectura del nmero de alumnos. Debe ser un valor positivo
do {
System.out.print("Nmero de alumnos de la clase: ");
numAlum = sc.nextInt();
} while (numAlum <= 0);
//se crea un array llamado notas de numAlumn elementos de tipo double
double[] notas = new double[numAlum];
// Entrada de datos. Se lee la nota de cada alummo y se guarda
// en cada elemento del array
for (i = 0; i < notas.length; i++) {
System.out.print("Alumno " + (i + 1) + " Nota final: ");
notas[i] = sc.nextDouble();
// Sumar todas las notas
for (i = 0; i < notas.length; i++) {
suma = suma + notas[i];
// Calcular la media
media = suma / notas.length;
// Mostrar la media
System.out.printf("Nota media del curso: %.2f %n", media);
// Mostrar los valores superiores a la media
System.out.println("Listado de notas superiores a la media: ");
for (i = 0; i < notas.length; i++) {
if (notas[i] > media) {
System.out.println("Alumno numero " + (i + 1)+ " Nota final: " + notas[i]);
}
}
4. Programa que crea un array de 20 elementos llamado Pares y guarde los 20 primeros nmeros pares.
Mostrar por pantalla el contenido del array creado.
/*
* Programa que crea un array de 20 elementos
* llamado Pares y guarde los 20 primeros
* nmeros pares.
* Mostrar por pantalla el contenido
* del array creado
*/
import java.util.*;
public class ArrayPares {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i, cont = 2;
int[] pares = new int[20];
//Llenamos el array con nmeros pares. Utilizamos un contador
//con valor inicial 2 y le sumamos dos en cada iteracin.
for (i = 0; i < pares.length; i++) {
pares[i] = cont;
cont += 2;
//Mostrar el array
for (i = 0; i < pares.length; i++) {
System.out.println(pares[i]);
}
5. Programa Java que guarda en un array 10 nmeros enteros que se leen por teclado. A continuacin se
recorre el array y calcula cuntos nmeros son positivos, cuntos negativos y cuntos ceros.
// Contar el nmero de elementos positivos, negativos y ceros de un array de 10 elementos.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] numeros = new int[10];
int pos = 0, neg = 0, cero = 0; //contadores
int i;
//Leemos los valores por teclado y los guardamos en el array
System.out.println("Lectura de los elementos del array: ");
for (i = 0; i < numeros.length; i++) {
System.out.print("numeros[" + i + "]= ");
numeros[i] = sc.nextInt();
//se recorre el array para contar positivos, negativos y ceros
for (i = 0; i < numeros.length; i++) {
if (numeros[i] > 0) {
pos++;
} else if (numeros[i] < 0) {
neg++;
} else {
cero++;
//mostrar resultados
System.out.println("Positivos: " + pos);
System.out.println("Negativos: " + neg);
System.out.println("Ceros: " + cero);
6. Programa Java que llene un array con 10 nmeros enteros que se leen por teclado. A continuacin
calcula y muestra la media de los valores positivos y la de los valores negativos del array.
/*
* Leer 10 nmeros enteros y mostrar la media de los valores positivos y la de los valores negativos.
*/
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] numeros = new int[10];
int pos = 0, neg = 0; //contadores para positivos y negativos
int i;
double sumaPos = 0, sumaNeg = 0; //suma de positivos y negativos
//Leemos los valores por teclado y los guardamos en el array
System.out.println("Lectura de los elementos del array: ");
for (i = 0; i < numeros.length; i++) {
System.out.print("numeros[" + i + "]= ");
numeros[i]=sc.nextInt();
//se recorre el array para sumar positivos y negativos
for (i = 0; i < numeros.length; i++) {
if (numeros[i] > 0){ //sumar positivos
sumaPos += numeros[i];
pos++;
} else if (numeros[i] < 0){ //sumar negativos
sumaNeg += numeros[i];
neg++;
//mostrar resultados
if (pos != 0) {
System.out.println("Media de los valores positivos: " + sumaPos / pos);
} else {
System.out.println("No ha introducido nmeros positivos");
if (neg != 0) {
System.out.println("Media de los valores negativos: " + sumaNeg / neg);
} else {
System.out.println("No ha introducido nmeros negativos");
7. Programa Java para leer la altura de N personas y calcular la altura media. Calcular cuntas personas
tienen una altura superior a la media y cuntas tienen una altura inferior a la media. El valor de N se
pide por teclado y debe ser entero positivo.
/*
* Leer la altura de N personas y calcular la altura media
* Mostra cuntos hay superiores a la media.
*/
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i, N;
int contMas = 0, contMenos = 0;
double media = 0;
//Leer el nmero de personas
do{
System.out.print("Nmero de personas: ");
N = sc.nextInt();
}while(N<=0);
//Se crea el array de tamao N
double[] alto = new double[N];
//Leer alturas
System.out.println("Lectura de la altura de las personas: ");
for (i = 0; i < N; i++) {
System.out.print("persona " + (i+1) + " = ");
alto[i] = sc.nextDouble();
media = media + alto[i]; //se suma la estatura leda para calcular la media
//Calcular la media
media = media / N;
//recorremos el array para ver cuantos hay ms altos
//que la media y cuantos ms bajos
for (i = 0; i < alto.length; i++) {
if (alto[i] > media){ //si la estatura es mayor que la media
contMas++;
} else if (alto[i] < media){ //si es menor
contMenos++;
//Mostrar resultados
System.out.println("Estatura media: " + media);
System.out.println("Personas con estatura superior a la media: " + contMas);
System.out.println("Personas con estatura inferior a la media: " + contMenos);
ara hacerlo utilizaremos dos arrays:
Un array de String para los nombres de los empleados
Un array de tipo double para los sueldos de cada empleado.
Al mismo tiempo que leemos los datos de los empleados iremos comprobando cul es el que tiene el
mayor sueldo. Para ello tomamos el sueldo del primer empleado que se lee como mayor sueldo y
despus vamos comprobando el resto de sueldos. Cuando encontramos alguno mayor que el mayor
actual este sueldo se convierte en el nuevo mayor.
En general para calcular el mayor de una serie de nmeros tomamos el primero como mayor y despus
comparamos el resto de nmeros.
//programa que muestra el nombre y el sueldo del empleado que ms gana
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//creamos los arrays
String[] empleados = new String[20];
double[] sueldos = new double[20];
//variables donde guardar el nombre y sueldo del empleado que ms gana
String nombreMayor;
double mayorSueldo;
int i = 0;
//se lee el primer empleado
System.out.println("Lectura de nombres y sueldos de empleados: ");
System.out.print("Empleado " + (i + 1) + ": ");
empleados[i] = sc.nextLine();
System.out.print("Sueldo: ");
sueldos[i] = sc.nextDouble();
//se toma el primero como mayor
mayorSueldo = sueldos[i];
nombreMayor = empleados[i];
//se leen el resto de empleados
for (i = 1; i < empleados.length; i++) {
sc.nextLine(); //limpiar el buffer
System.out.print("Empleado " + (i + 1) + ": ");
empleados[i] = sc.nextLine();
System.out.print("Sueldo: ");
sueldos[i] = sc.nextDouble();
//se compara el sueldo ledo con el mayor
if (sueldos[i] > mayorSueldo) {
mayorSueldo = sueldos[i];
nombreMayor = empleados[i];
//mostrar resultados
System.out.println("Empleado con mayor sueldo: " + nombreMayor );
System.out.println("Sueldo: " + mayorSueldo);
En esta entrada vamos a escribir un mtodo Java que llene un array de enteros con nmeros aleatorios.
Los nmeros aleatorios debern estar comprendidos entre dos lmites (desde, hasta) ambos incluidos.
El mtodo recibe como parmetros los valores desde, hasta y el tamao del array.
El mtodo devuelve mediante return el array de enteros creado.
Para obtener nmeros enteros aleatorios usaremos el mtodo nextInt() de la clase Random.
Para que los nmeros aleatorios obtenidos estn dentro de los limites utilizaremos el mtodo nextInt()
de la siguiente frma: nextInt(hasta - desde + 1) + desde
public static int [] llenarArrayAleatorio(int desde, int hasta, int tam){
int[] numeros = new int[tam];
Random rnd = new Random();
for (int i = 0; i < numeros.length; i++) {
numeros[i] = rnd.nextInt(hasta - desde + 1) + desde;
return numeros;
Si los nmeros no se pueden repetir debemos complicar un poco ms el cdigo.
En este caso cada vez que se obtiene un nmero aleatorio se debe comprobar si ya est en el array.
Para hacer este trabajo vamos a escribir un mtodo llamado comprobarSiContiene. A este mtodo se le
enva el array, la posicin del elemento actual y el nmero aleatorio a insertar y devuelve true si el
nmero ya existe en el array. En ese caso se vuelve a sacar otro nmero aleatorio.
public static int[] llenarArrayAleatorio(int desde, int hasta, int tam) {
int[] numeros = new int[tam];
Random rnd = new Random();
int n;
for (int i = 0; i < numeros.length; i++) {
do {
n = rnd.nextInt(hasta - desde + 1) + desde;
} while (comprobarSiContiene(numeros, i, n));
numeros[i] = n;
return numeros;
public static boolean comprobarSiContiene(int[] numeros, int indice, int valor) {
for (int i = 0; i < indice; i++) {
if (numeros[i] == valor) {
return true;
return false;
}
Esta sera la solucin para aquellos que estn empezando a programar. Pero en este caso nos podemos
ahorrar trabajo utilizando la API de Java. En concreto utilizando un ArrayList y el mtodo shuffle de
Collections.
La idea es llenar un ArrayList con todos los nmeros comprendidos entre los lmites desde/hasta. A
continuacin se llama al mtodo shuffle para desordenarlos y despus se pasan al array de enteros los
tam primeros elementos, donde tam es el tamao del array a devolver.
El mtodo utilizando el ArrayList y Collections.shuffle quedara as:
private static int[] llenarArrayAleatorio(int desde, int hasta, int tam) {
ArrayList<Integer> array = new ArrayList<Integer>();
for (int i = desde; i <= hasta; i++) {
array.add(i);
Collections.shuffle(array);
int [] numeros = new int[tam];
for(int i = 0; i<numeros.length; i++){
numeros[i]=array.get(i);
return numeros;
Ejercicios con ArrayList
Mtodo mostrarResultados(): muestra por pantalla todas las alturas y calcula y muestra el nmero de
alumnos con altura superior e inferior a la media. Recibe como parmetros el ArrayList con las alturas de
todos los alumnos y la media calculada anteriormente.
Solucin:
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//creamos el ArrayList que contendr la altura de los alumnos
ArrayList<Double> altura = new ArrayList();
int N;
double media;
//obtenemos el nmero de alumnos de la clase
N = numeroAlumnos();
//leemos la altura de los N alumnos
leerAlturas(altura, N);
//calculamos la media
media = calcularMedia(altura);
//mostramos los resultados
mostrarResultados(altura, media);
//Mtodo para pedir por teclado el nmero de alumnos de la clase
public static int numeroAlumnos() {
Scanner sc = new Scanner(System.in);
int n;
do {
System.out.print("Introduce nmero de alumnos: ");
n = sc.nextInt();
} while (n < 1);
return n;
//Este mtodo recibe el ArrayList y el nmero de alumnos de la clase
//Pide por teclado la altura de todos los alumnos y las guarda en el ArrayList
public static void leerAlturas(ArrayList<Double> a, int n) {
Scanner sc = new Scanner(System.in);
int i;
double alto;
for (i = 1; i <= n; i++) {
do {
System.out.print("Alumno " + i + " altura: ");
alto = sc.nextDouble();
} while (alto <= 0);
a.add(alto); //aade la altura al final del ArrayList
//Este mtodo recibe el ArrayList con todas las alturas
//calcula y devuelve la media
public static double calcularMedia(ArrayList<Double> a) {
double media = 0;
for (Double d : a) {
media = media + d;
return media / a.size();
//Muestra la altura de todos los alumnos, la media y calcula y muestra
//cuantos alumnos hay con altura superior a la media
//y cuntos con altura inferior
public static void mostrarResultados(ArrayList<Double> a, double media) {
int superior = 0, inferior = 0;
System.out.println("alturas introducidas: ");
System.out.println(a);
for (Double d : a) {
if (d > media)
superior++;
else if (d < media)
inferior++;
System.out.printf("Media: %.2f %n", media);
System.out.println("Hay " + superior + " alumnos ms altos que la media");
System.out.println("Hay " + inferior + " alumnos ms bajos que la media");
}
Leer nmeros por teclado hasta introducir -99. Calcular la suma, la media y cuntos son mayores que la
media.
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> array = leerValores();
double suma = calcularSuma(array);
double media = suma / array.size();
mostrarResultados(array, suma, media);
//pedir por teclado los valores y guardarlos en el ArrayList
//la lectura acaba cuando se introduzca -99
public static ArrayList<Integer> leerValores() {
ArrayList<Integer> valores = new ArrayList();
Scanner sc = new Scanner(System.in);
int n;
System.out.print("Introduce entero. -99 para acabar: ");
n = sc.nextInt();
while (n != -99) {
valores.add(n);
System.out.print("Introduce entero. -99 para acabar: ");
n = sc.nextInt();
return valores;
//recorrer el ArrayList y sumar todos sus elementos
public static double calcularSuma(ArrayList<Integer> valores) {
double suma = 0;
Iterator it = valores.iterator();
while (it.hasNext()) {
suma = suma + (Integer) it.next();
//next() devuelve un dato de tipo Object. Hay que convertirlo a Integer
return suma;
//Mostrar valores, su suma y su media aritmtica
//y cuntos hay superiores a la media
public static void mostrarResultados(ArrayList<Integer> valores, double suma, double media) {
int cont = 0;
System.out.println("Valores introducidos: ");
System.out.println(valores);
System.out.println("Suma: " + suma);
System.out.printf("Media: %.2f %n", media);
for (Integer i : valores) {
if (i > media) {
cont++;
System.out.println(cont + " valores superiores a la media");
Rotar los elementos de un ArrayList en Java
Programa completo para utilizar estos mtodos:
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> A = leerArray();
mostrar(A);
//utilizando el mtodo clsico
desplazarDerecha(A);
mostrar(A);
//utilizando solo los mtodos de ArrayList
desplazarDerecha2(A);
mostrar(A);
//pedir por teclado los valores del ArrayList
public static ArrayList<Integer> leerArray() {
Scanner sc = new Scanner(System.in);
ArrayList<Integer> numeros = new ArrayList<Integer>();
int N;
do {
System.out.print("Nmero de elementos del array (>0): ");
N = sc.nextInt();
} while (N <= 0);
for (int i = 0; i < N; i++) {
System.out.print("elemento[" + i + "]= ");
numeros.add(sc.nextInt());
return numeros;
//mtodo clsico: guardamos el ltimo elemento en un auxiliar,
//desplazamos todos los elementos una posicin a la derecha
//finalmente guardamos en el primer elemento el valor guardado en el auxiliar
public static void desplazarDerecha(ArrayList<Integer> a) {
int i;
int aux = a.get(a.size() - 1); //guardar el ltimo elemento en una variable
for (i = a.size() - 1; i > 0; i--) { //desplazar los elementos
a.set(i, a.get(i - 1)); //a cada elemento se le asigna el anterior
a.set(0, aux); //asignar al primero el ltimo que se guard al principio
//Utilizando mtodos de ArrayList:
//guardamos el ltimo elemento en una variable
//insertamos este elemento al principio
//eliminamos el ltimo elemento
public static void desplazarDerecha2(ArrayList<Integer> a) {
int aux = a.get(a.size()-1);
a.add(0,aux);
a.remove(a.size()-1);
//Mtodo para mostrar todo el ArrayList
public static void mostrar(ArrayList<Integer> a) {
System.out.println(a);