Académique Documents
Professionnel Documents
Culture Documents
Declaracin de variables
"i:"+i );
"l:"+l );
"d:"+d );
"i:"+f );
"b:"+b );
"c:"+c );
"cadena:"+cadena );
}
}
1.2
1.3
Sentencias condicionales if
{
System.out.println("x+y<10");
}
}
}
1.4
1.5
Bucles while
1.6
import java.io.*;
public class EntSal
{
public static void main( String args[] ) throws IOException
{
//Objeto para leer una cadena del teclado
BufferedReader entrada=
new BufferedReader(new InputStreamReader(System.in));
int edad;
String nombre;
System.out.println( "\nIntroduce tu nombre: " );
nombre = entrada.readLine();
System.out.println( "\nIntroduce tu edad: " );
//conversin de cadena a nmero
edad = Integer.parseInt(entrada.readLine());
System.out.print( "\nTe llamas " + nombre + " y tienes "
+ edad +
"
aos.");
}
}
El siguiente programa realiza lo mismo que el ejemplo anterior pero utiliza una clase introducida en
la versin 1.5 del jdk que se llama Scanner y que simplifica las operaciones de entrada y salida.
import java.util.Scanner;
public class EmtSalScanner
{
public static void main(String[] args)
{
//Objeto para leer una cadena del teclado
Scanner entrada = new Scanner(System.in);
int edad;
String nombre;
System.out.println( "\nIntroduce tu nombre:" );
//lectura de un String
nombre = entrada.nextLine();
System.out.println( "\nIntroduce tu edad:" );
//lectura de un int
edad = entrada.nextInt();
System.out.print( "\nTe llamas " + nombre + " y tienes "
+ edad + " aos.");
}
}
2. Media
El siguiente programa que realizaremos trata de dar un ejemplo de utilizacin de bucles simples,
sentencias condicionales y entrada y salida en Java.
El programa calcula el promedio de 10 calificaciones de examen. Esta calificacin puede ser A, B, C,
D y F y corresponden con 4, 3, 2, 1 y 0 puntos respectivamente.
// Media.java
// Calcula la nota media de los exmenes de un grupo de alumnos
// Utilizacin del bucle while y sentencias condicionales
import java.io.*;
public class Media {
public static void main( String args[] ) throws IOException
{
int contador, total, media;
String nota;
//Objeto para leer una cadena del teclado
BufferedReader entrada=
new BufferedReader(new InputStreamReader(System.in));
// inicializacin de variables
total = 0;
contador = 1;
while ( contador <= 10 ) {
System.out.println( "\nTeclee calificacin (A,B,C,D,F): " );
nota = entrada.readLine();
if ( nota.equals("A") )
total = total + 4;
else if ( nota.equals("B")
total = total + 3;
else if ( nota.equals("C")
total = total + 2;
else if ( nota.equals("D")
total = total + 1;
else if ( nota.equals("F")
total = total + 0;
)
)
)
)
contador = contador + 1;
}
media = total / 10;
System.out.println("\n\nEl promedio del grupo es: " + media);
}
}
2.1
3. Ejercicios propuestos
1. Construir un programa en Java que sume los nmeros del 1 al 100.
2. Construir un programa en Java que sume los nmeros pares del 1 al 100.
3. Construir un programa en Java que sume los nmeros de 1 al 100, pero solo aquellos que
acaben en 2 o en 3.
4. Construir un programa en Java que sume los nmeros de 1 al n, siendo n un nmero
introducido por teclado mayor que 0.
5. Construir un programa en Java que muestre la tabla de multiplicar de la forma tradicional (Ej.
2x4=8).
6. Crear un programa que imprime el mayor de tres enteros.
7. Crear un programa que dados dos enteros imprime su suma, resta, producto y divisin.
8. Crear un programa que dados cuatro enteros imprime la suma y la media.
9. Crear un programa que dado un entero imprima un valor lgico que indica si el nmero es par
o impar.
10. Realizar un programa que dados un entero y una cadena repita tantas veces la cadena como
indique el entero.
11. Realizar un programa que pida dos cadenas al usuario que deben ser V o F para ser
convertidas en valores lgicos y presente el resultado de las tres operaciones lgicas (y, o, no)
sobre dichos valores.
12. Codificar el programa que dado un nmero devuelva el nmero de cifras que lo componen.
Considerar que el nmero 0 tiene 1 cifra.
13. Realizar un programa que pida los datos de altura y sexo de personas y calcule la media de
altura para hombres y la media para mujeres.
14. Realizar un programa que pida datos de altura, sexo y edad y realice la media de altura para
cada uno de los siguientes grupos:
mujeres, menores de 20 aos no incluidas las de 20
hombres, menores de 20 aos no incluidos los de 20
mujeres, entre 20 y 40 aos ambos inclusive
mujeres, de ms de 40 aos
hombres de ms de 20 aos
personas entre 15 y 35 aos ambos inclusive
15. Codificar un programa que, dados tres nmeros enteros que recogen la informacin del da,
mes y ao de una fecha, determine si es una fecha vlida, considerando el 29 de febrero para
los aos bisiestos.
16. Hacer un programa que dadas dos fechas diga la diferencia en das entre ellas.
17. Escribir un programa que determine si un nmero es primo.
Notas: Un nmero es primo si slo es divisible por s mismo y por 1.
Si un nmero no es primo diremos que es compuesto.
El 0 y el 1 son nmeros especiales que no se consideran primos ni compuestos.
)
)
)
)
}
media = (double) total / 10;
System.out.println( "\n\nEl promedio del grupo es: " + media );
}
}
6. Hacer que el programa lea notas hasta que el usuario introduzca una Z. Utilizar un bucle
while y un do-while.
Solucin:
import java.io.*;
public class MediaWhile {
public static void main( String args[] ) throws IOException
{
double media;
int contador=0, total=0;
String nota;
BufferedReader entrada=
new BufferedReader(new InputStreamReader(System.in));
System.out.println( "Teclee calificacin (A,B,C,D,F), Z para terminar: " );
nota = entrada.readLine();
nota = nota.toUpperCase();
while ( ! nota.equals("Z") ) {
if ( nota.equals("A") )
total = total + 4;
else if ( nota.equals("B") )
total = total + 3;
else if ( nota.equals("C") )
total = total + 2;
else if ( nota.equals("D") )
total = total + 1;
else if ( nota.equals("F") )
total = total + 0;
contador = contador + 1;
System.out.println("\nTeclee calificacin (A,B,C,D,F),
Z para terminar:");
nota = entrada.readLine().toUpperCase();
}
if ( contador != 0 ) {
media = (double) total / contador;
System.out.println( "\nEl promedio del grupo es: " + media );
}
else
System.out.println( "\nNo se introdujeron calificaciones." );
}
}
7. Hacer que el programa solo lea las letras correspondientes a las calificaciones A, B, C, D y F
o Z para finalizar. En caso de que el usuario introduzca otra letra se le avisar del error y no
ser tomada en cuenta.
Solucin:
import java.io.*;
public class MediaDoWhile2
{
public static void main( String args[] ) throws IOException
{
double media;
int contador, total;
String nota;
BufferedReader entrada=
new BufferedReader(new InputStreamReader(System.in));
total = 0;
contador = 0;
do
{
do
{
System.out.println("Teclee calificacin (A,B,C,D,F),
Z para terminar: ");
nota = entrada.readLine().toUpperCase();
if (!nota.equals("A") && !nota.equals("B")
&& !nota.equals("C") && !nota.equals("D")
&& !nota.equals("F") && !nota.equals("Z"))
System.out.println("Nota erronea");
} while(!nota.equals("A") && !nota.equals("B")
&& !nota.equals("C") && !nota.equals("D")
&& !nota.equals("F") && !nota.equals("Z"));
if ( nota.equals("A") )
{
total = total + 4;
contador = contador + 1;
}
else if ( nota.equals("B") )
{
total = total + 3;
contador = contador + 1;
}
else if ( nota.equals("C") )
{
total = total + 2;
contador = contador + 1;
}
else if ( nota.equals("D") )
{
total = total + 1;
contador = contador + 1;
}
else if ( nota.equals("F") )
{
total = total + 0;
contador = contador + 1;
}
} while ( ! nota.equals("Z") );
if ( contador != 0 )
{
media = (double) total / contador;
System.out.println( "\nEl promedio del grupo es: " + media );
}
else
System.out.println( "\nNo se introdujeron calificaciones." );
}
}
4.2
2. Construir un programa en Java que sume los nmeros pares del 1 al 100.
public class Ej2 {
public static void main (String args[])
{
int i=0, suma100pares=0;
for (i=1; i<=100; i++)
{
if (i%2 == 0)
{
suma100pares += i;
}
}
System.out.println ("\nSuma de los pares del 1 al 100: "
+ suma100pares);
}
}
3. Construir un programa en Java que sume los nmeros del 1 al 100, pero solo aquellos que
acaben en 2 o en 3.
public class Ej3 {
public static void main (String args[])
{
int i=0, suma10023=0;
for (i=1; i<=100; i++)
{
if (((i-2)%10 == 0) || ((i-3)%10 == 0))
{
suma10023 += i;
}
}
System.out.println ("\nSuma de los nmeros que terminan
en 2 o 3 del 1 al 100: " + suma10023);
}
}
10
5. Construir un programa en Java que muestre la tabla de multiplicar de la forma tradicional (Ej.
2x4=8).
public class Ej5 {
public static void main (String args[])
{
int i=0, j=0, res=0;
for (i=1; i<=10; i++)
{
for (j=1; j<=9; j++)
{
res = i*j;
System.out.println (i+"x"+j+"="+res);
}
}
}
}
11
}
else
{
System.out.println ("el mayor es: "+e3);
}
}
}
7. Crear un programa que dados dos enteros imprime su suma, resta, producto y divisin.
public class Ej7
{
public static void main (String[] args)
{
// dos enteros
int ent1=23, ent2=3;
System.out.println ("suma: "+(ent1+ent2));
System.out.println ("resta: "+(ent1-ent2));
System.out.println ("multi: "+(ent1*ent2));
System.out.println ("divi: "+(ent1/ent2));
}
}
9. Crear un programa que dado un entero imprima un valor lgico que indica si el nmero es par
o impar.
public class Ej9
{
public static void main (String[] args)
{
// entero
int ent1=23;
System.out.println("par: "+ (ent1 % 2 == 0));
}
}
10. Realizar un programa que dados un entero y una cadena repita tantas veces la cadena como
indique el entero.
public class Ej10
{
public static void main (String[] args)
{
int entero=3;
String cadena="Java";
// si el entero no es positivo no hacemos nada
12
11. Realizar un programa que pida dos cadenas al usuario que deben ser V o F para ser
convertidas en valores lgicos y presente el resultado de las tres operaciones lgicas (y, o, no)
sobre dichos valores.
import java.io.*;
public class Ej11
{
public static void main (String[] args) throws IOException
{
BufferedReader entrada=
new BufferedReader(new InputStreamReader(System.in));
String cad1,cad2;
boolean log1,log2;
System.out.println ("Introduce cadena 1 (V/F): ");
cad1=entrada.readLine().toUpperCase();
System.out.println ("Introduce cadena 2 (V/F): ");
cad2=entrada.readLine().toUpperCase();
log1=cad1.equals("V");
log2=cad2.equals("V");
System.out.println("Operacin
System.out.println("Operacin
System.out.println("Operacin
System.out.println("Operacin
}
}
12. Codificar el programa que dado un nmero devuelva el nmero de cifras que lo componen.
Considerar que el nmero 0 tiene 1 cifra.
public class Ej12
{
public static void main (String[] args)
{
int entero=4560;
int cifras=0;
if (entero==0)
{
cifras=1;
}
else
{
for (int ent=entero; ent>0; cifras++)
{
ent/=10;
System.out.println(ent);
}
}
13
13. Realizar un programa que pida los datos de altura y sexo de personas y calcule la media de
altura para hombres y la media para mujeres.
import java.io.*;
public class Ej13
{
public static void main (String[] args) throws IOException
{
BufferedReader entrada =
new BufferedReader(new InputStreamReader(System.in));
String leido;
int alturasMas=0, numMas=0, alturasFem=0, numFem=0;
for (int i = 0; i < 10; i++)
{
do
{
System.out.println ("Introduzca sexo (M/F): ");
leido=entrada.readLine().toUpperCase();
} while (!leido.equals("M") && !leido.equals ("F"));
System.out.println("Introduzca altura:");
if (leido.equals("M"))
{
alturasMas += Integer.parseInt(entrada.readLine());
numMas++;
}
else
{
alturasFem += Integer.parseInt(entrada.readLine());
numFem++;
}
}
System.out.println ("\n\nMedia de alturas
Masc.="+(alturasMas/numMas));
System.out.println ("\n\nMedia de alturas
Fem.="+(alturasFem/numFem));
}
}
14
14. Realizar un programa que pida datos de altura, sexo y edad y realice la media de altura para
cada uno de los siguientes grupos:
mujeres, menores de 20 aos no incluidas las de 20
hombres, menores de 20 aos no incluidos los de 20
mujeres, entre 20 y 40 aos ambos inclusive
mujeres, de ms de 40 aos
hombres de ms de 20 aos
personas entre 15 y 35 aos ambos inclusive
import java.io.*;
public class Ej14
{
public static void main (String[] args) throws IOException
{
BufferedReader entrada =
new BufferedReader(new InputStreamReader(System.in));
String leido;
int enteroLeido=0;
int alturasMujeresMenores=0, numMujeresMenores=0;
int alturasHombresMenores=0, numHombresMenores=0;
int alturasMujeresMedia =0, numMujeresMedia =0;
int alturasMujeresMayores=0, numMujeresMayores=0;
int alturasHombresMedia =0, numHombresMedia =0;
int alturasGrupoSuelto
=0, numGrupoSuelto
=0;
for (int i = 0; i < 10; i++)
{
do
{
System.out.println ("Introduzca sexo (M/F): ");
leido=entrada.readLine().toUpperCase();
} while (!leido.equals("M") && !leido.equals("F"));
do
{
System.out.println ("Introduzca edad (1-100): ");
enteroLeido=Integer.parseInt(entrada.readLine());
} while (enteroLeido<1 || enteroLeido>100);
System.out.println ("Introduzca altura:");
enteroLeido=Integer.parseInt (entrada.readLine ());
if (leido.equals("M"))
{
//hombres
if (enteroLeido<20)
{
alturasHombresMenores+=enteroLeido;
numHombresMenores+=1;
}
else
{
alturasHombresMedia+=enteroLeido;
numHombresMedia+=1;
}
}
else
{
// mujeres
if (enteroLeido<20)
{
15
alturasMujeresMenores+=enteroLeido;
numMujeresMenores+=1;
}
else
{
if (enteroLeido>40)
{
alturasMujeresMayores+=enteroLeido;
numMujeresMayores+=1;
}
else
{
alturasMujeresMedia+=enteroLeido;
numMujeresMedia+=1;
}
}
}
// el grupo de 15 a 35 de cualquier sexo
if (enteroLeido>=15 && enteroLeido<=35)
{
alturasGrupoSuelto+=enteroLeido;
numGrupoSuelto+=1;
}
}
System.out.println ("\n\nMedia de alturas:");
if (numMujeresMenores>0)
System.out.println ("Mujeres <20 aos:
"+(alturasMujeresMenores/numMujeresMenores));
if (numMujeresMedia>0)
System.out.println ("Mujeres >20 y <40 aos:
"+(alturasMujeresMedia/numMujeresMedia));
if (numMujeresMayores>0)
System.out.println ("Mujeres >40 aos:
"+(alturasMujeresMayores/numMujeresMayores));
if (numHombresMenores>0)
System.out.println ("Hombres <20 aos:
"+(alturasHombresMenores/numHombresMenores));
if (numHombresMedia>0)
System.out.println ("Hombres >20 aos:
"+(alturasHombresMedia/numHombresMedia));
if (numGrupoSuelto>0)
System.out.println ("General 15-35 aos:
"+(alturasGrupoSuelto/numGrupoSuelto));
}
}
15. Codificar un programa que, dados tres nmeros enteros que recogen la informacin del da,
mes y ao de una fecha, determine si es una fecha vlida, considerando el 29 de febrero para
los aos bisiestos.
import java.io.*;
public class Ej15
{
public static void main (String[] args) throws IOException
{
BufferedReader entrada =
new BufferedReader(new InputStreamReader(System.in));
// valores de fecha
int dia, mes, ao;
boolean correcta=true;
16
16. Hacer un programa que dadas dos fechas diga la diferencia en das entre ellas.
public class Ej16
{
public static void main (String[] args)
{
// valores de fecha1
int dia1=29, mes1=7, ao1=2006;
// valores de fecha2
int dia2=2, mes2=3, ao2=2004;
// restamos fecha1 - fecha2
int fecha1=ao1*365+mes1*30+dia1;
int fecha2=ao2*365+mes2*30+dia2;
17
18