JAVA
JAVA
1 - Instalación de Java
2 - Instalación del editor Eclipse
3 - Pasos para crear un programa con Eclipse
4 - Ejercicio de Ejemplo
5 - Estructura de programación secuencial
6 - Estructuras condicionales simples y compuestas
7 - Estructuras condicionales anidadas
8 - Condiciones compuestas con operadores lógicos
9 - Estructura repetitiva while
10 - Estructura repetitiva for
11 - Estructura repetitiva do while
12 - Cadenas de caracteres en Java
13 - Declaración de una clase y definición de objetos.
14 - Declaración de métodos.
15 - Estructura de datos tipo vector
16 - Vector (Tamaño de un vector)
17 - Vectores paralelos
18 - Vectores (mayor y menor elemento)
19 - Vectores (ordenamiento)
20 - Vectores (ordenamiento con vectores paralelos)
21 - Estructura de datos tipo matriz
22 - Matrices (cantidad de filas y columnas)
23 - Matrices y vectores paralelos
24 - Matrices irregulares
25 - Constructor de la clase
26 - Clase String
1 - Instalación de Java
Como segundo paso veremos que todo programa en Java requiere como
mínimo una clase. Para crear una clase debemos seleccionar desde el menú
de opciones:
Lo más importante es que quede claro los pasos que debemos dar para
crear un proyecto en Java. El objetivo de una clase, la función main etc. los
veremos a lo largo de este curso.
4 - Ejercicio de Ejemplo
import java.util.Scanner;
public class SueldoOperario {
public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);
int horasTrabajadas;
float costoHora;
float sueldo;
System.out.print("Ingrese la cantidad de horas trabajadas por el
empleado:");
horasTrabajadas=teclado.nextInt();
System.out.print("Ingrese el valor de la hora:");
costoHora=teclado.nextFloat();
sueldo=horasTrabajadas * costoHora;
System.out.print("El empleado debe cobrar:");
System.out.print(sueldo);
}
}
Explicación.
Concepto de una clase. Veremos más adelante que en Java todo debe
estar contenido en clases, por lo que hasta el problema más elemental
debe estar contenido en una clase. Para declarar una clase utilizamos la
sintaxis:
Todo programa constituido por una única clase debe tener definida la
función main:
import java.util.Scanner;
int horasTrabajadas;
float costoHora;
float sueldo;
Utilizamos la palabra clave int para definir variables enteras (en Java las
palabras claves deben ir obligatoriamente en minúsculas, sino se produce un
error sintáctico) Luego de la palabra clave debemos indicar el nombre de la
variable, por ejemplo: horasTrabajadas (se propone que el nombre de la
variable comience con minúsculas y en caso de estar constituida por dos
palabras o más a partir de la segunda palabra el primer caracter se
especifique con mayúsculas (un nombre de variable no puede tener espacios
en blanco, empezar con un número, ni tampoco utilizar caracteres
especiales)
Debemos buscar siempre nombres de variables que nos indiquen que
almacenan (no es conveniente llamar a nombres de variables con letras
individuales)
System.out.print(sueldo);
horasTrabajadas=teclado.nextInt();
costoHora=teclado.nextFloat();
import java.util.Scanner;
public class EstructuraCondicionalCompuesta1 {
public static void main(String[] ar) {
Scanner teclado=new Scanner(System.in);
int num1,num2;
System.out.print("Ingrese primer valor:");
num1=teclado.nextInt();
System.out.print("Ingrese segundo valor:");
num2=teclado.nextInt();
if (num1>num2) {
System.out.print(num1);
} else {
System.out.print(num2);
}
}
}
Operadores
Operador &&
Problema:
Confeccionar un programa que lea por teclado tres números distintos y
nos muestre el mayor.
La primera estructura condicional es una ESTRUCTURA CONDICIONAL
COMPUESTA con una CONDICION COMPUESTA.
import java.util.Scanner;
Operador ||
Traducido se lo lee como ?O?. Si la condición 1 es Verdadera O la
condición 2 es Verdadera, luego ejecutar la rama del Verdadero.
Problema:
Se carga una fecha (día, mes y año) por teclado. Mostrar un mensaje si
corresponde al primer trimestre del año (enero, febrero o marzo) Cargar por
teclado el valor numérico del día, mes y año.
Ejemplo: dia:10 mes:1 año:2010
La carga de una fecha se hace por partes, ingresamos las variables dia,
mes y año.
import java.util.Scanner;
En caso que la condición sea Falsa continúa por la rama del Falso y sale
de la estructura repetitiva para continuar con la ejecución del algoritmo. El
bloque se repite MIENTRAS la condición sea Verdadera.
Problema 1:
Realizar un programa que imprima en pantalla los números del 1 al 100.
Sin conocer las estructuras repetitivas podemos resolver el problema
empleando una estructura secuencial. Inicializamos una variable con el valor
1, luego imprimimos la variable, incrementamos nuevamente la variable y así
sucesivamente.
Si continuamos con el diagrama no nos alcanzarían las próximas 5
páginas para finalizarlo. Emplear una estructura secuencial para resolver este
problema produce un diagrama de flujo y un programa en Java muy largo.
Ahora veamos la solución empleando una estructura repetitiva while:
Es muy importante analizar este diagrama:
Respuestas:
1 - Debemos cambiar la condición del while con x<=500.
2 - Debemos inicializar x con el valor 50.
3 - Inicializar x con el valor -50 y fijar la condición x<=0.
4 - Inicializar a x con el valor 2 y dentro del bloque repetitivo incrementar a x
en 2 ( x = x + 2 ).
Problema 2:
Escribir un programa que solicite la carga de un valor positivo y nos
muestre desde 1 hasta el valor ingresado de uno en uno.
Ejemplo: Si ingresamos 30 se debe mostrar en pantalla los números del 1 al
30.
Es de FUNDAMENTAL importancia analizar los diagramas de flujo y la
posterior codificación en Java de los siguientes problemas, en varios
problemas se presentan otras situaciones no vistas en el ejercicio anterior.
Podemos observar que se ingresa por teclado la variable n. El operador
puede cargar cualquier valor.
import java.util.Scanner;
Problema 3:
Desarrollar un programa que permita la carga de 10 valores por teclado y nos
muestre posteriormente la suma de los valores ingresados y su promedio.
En este problema, a semejanza de los anteriores, llevamos un
CONTADOR llamado x que nos sirve para contar las vueltas que debe repetir
el while.
También aparece el concepto de ACUMULADOR (un acumulador es un
tipo especial de variable que se incrementa o decrementa con valores
variables durante la ejecución del programa).
while(x<=10) {
System.out.print("Ingrese valor "+x+": ");
valor=teclado.nextInt();
suma=suma+valor;
x++;
}
promedio=suma/10;
System.out.println("La suma de los 10 valores es: "+suma);
System.out.println("El promedio es: "+promedio);
}
}
Problema 4:
Una planta que fabrica perfiles de hierro posee un lote de n piezas.
Confeccionar un programa que pida ingresar por teclado la cantidad de
piezas a procesar y luego ingrese la longitud de cada perfil; sabiendo que la
pieza cuya longitud esté comprendida en el rango de 1,20 y 1,30 son aptas.
Imprimir por pantalla la cantidad de piezas aptas que hay en el lote.
Podemos observar que dentro de una estructura repetitiva puede haber
estructuras condicionales (inclusive puede haber otras estructuras repetitivas
que veremos más adelante)
import java.util.Scanner;
while(x<=n) {
System.out.print("Ingrese la medida de la pieza: ");
largo=teclado.nextFloat();
if(largo>=1.20 && largo<=1.30) {
cantidad++;
}
x++;
}
System.out.println("La cantidad de piezas aptas son:
"+cantidad);
}
}
Representación gráfica:
Analicemos el ejemplo:
- La variable f toma inicialmente el valor 1.
- Se controla automáticamente el valor de la condición: como f vale 1 y esto
es menor
que 50, la condición da verdadero.
- Como la condición fue verdadera, se ejecutan la/s operación/es.
- Al finalizar de ejecutarlas, se retorna a la instrucción f++, por lo que la
variable f se incrementa en uno.
- Se vuelve a controlar (automáticamente) si f es menor o igual a 50.
Como ahora su valor es 2, se ejecuta nuevamente el bloque de instrucciones
e incrementa nuevamente la variable del for al terminar el mismo.
- El proceso se repetirá hasta que la variable f sea incrementada al valor 51.
En este momento la condición será falsa, y el ciclo se detendrá.
Problema 1:
Realizar un programa que imprima en pantalla los números del 1 al 100.
Podemos observar y comparar con el problema realizado con el while.
Con la estructura while el CONTADOR x sirve para contar las vueltas. Con el
for el CONTADOR f cumple dicha función.
En este caso, a la variable del for (f) sólo se la requiere para que se repita
el bloque de instrucciones 10 veces.
import java.util.Scanner;
Problema 3:
Escribir un programa que lea 10 notas de alumnos y nos informe cuántos
tienen notas mayores o iguales a 7 y cuántos menores.
for(int i=1;i<=10;i++) {
System.out.print("Ingrese nota "+i+": ");
nota=teclado.nextDouble();
if(nota>=7) {
aprobados++;
}else {
reprobados++;
}
}
System.out.println("La cantidad de Aprobados es: "+aprobados);
System.out.println("La cantidad de Reprobados es:
"+reprobados);
}
}
Problema 4:
Escribir un programa que lea 10 números enteros y luego muestre
cuántos valores ingresados fueron múltiplos de 3 y cuántos de 5. Debemos
tener en cuenta que hay números que son múltiplos de 3 y de 5 a la vez.
Tengamos en cuenta que el operador matemático % retorna el resto de
dividir un valor por otro, en este caso: valor%3 retorna el resto de dividir el
valor que ingresamos por teclado, por tres.
Veamos: si ingresamos 6 el resto de dividirlo por 3 es 0, si ingresamos 12
el resto de dividirlo por 3 es 0. Generalizando: cuando el resto de dividir por 3
al valor que ingresamos por teclado es cero, se trata de un múltiplo de dicho
valor.
import java.util.Scanner;
public class Ejercicio_8 {
public static void main(String[] arg) {
Problema 5:
Escribir un programa que lea n números enteros y calcule la cantidad de
valores mayores o iguales a 1000.
Representación gráfica:
El bloque de operaciones se repite MIENTRAS que la condición sea
Verdadera.
Problema 1:
Escribir un programa que solicite la carga de un número entre 0 y 999, y
nos muestre un mensaje de cuántos dígitos tiene el mismo. Finalizar el
programa cuando se cargue el valor 0.
No hay que confundir los rombos de las estructuras condicionales con los
de las estructuras repetitivas do while.
Problema 2:
import java.util.Scanner;
public class Ejercicio_11 {
public static void main(String[] arg) {
Scanner teclado=new Scanner(System.in);
int valor,suma=0,cant=0,promedio;
do {
System.out.print("Ingrese un valor (0 para finalizar): ");
valor=teclado.nextInt();
if(valor!=0) {
suma=suma+valor;
cant++;
}
}while(valor!=0);
if(cant!=0) {
promedio=suma/cant;
System.out.print("El promedio de los valores ingresados es:
"+promedio);
}else {
System.out.print("No se ingresaron valores");
}
}
}
Problema 3:
Realizar un programa que permita ingresar el peso (en kilogramos) de piezas.
El proceso termina cuando ingresamos el valor 0. Se debe informar:
a) Cuántas piezas tienen un peso entre 9.8 Kg. y 10.2 Kg.?, cuántas con más
de 10.2 Kg.? y cuántas con menos de 9.8 Kg.?
b) La cantidad total de piezas procesadas.
import java.util.Scanner;
public class Ejercicio_12 {
public static void main(String[] arg) {
Problema 1:
Solicitar el ingreso del nombre y edad de dos personas. Mostrar el
nombre de la persona con mayor edad.
import java.util.Scanner;
nombre1=teclado.next();
Veamos que existe otro método llamado nextLine() que nos permite
cargar espacios en blanco pero para su uso se complica cuando cargamos
otras valores de tipo distinto a String (por ejemplo int, float etc.)
Problema 2:
Solicitar el ingreso del apellido, nombre y edad de dos personas. Mostrar
el nombre de la persona con mayor edad. Realizar la carga del apellido y
nombre en una variable de tipo String.
import java.util.Scanner;
public class Ejercicio_2 {
public static void main(String[] arg) {
Scanner teclado=new Scanner(System.in);
String persona1,persona2;
int edad1,edad2;
System.out.print("Ingrese el Apellido y Nombre 1: ");
persona1=teclado.nextLine();
System.out.print("Ingrese la edad: ");
edad1=teclado.nextInt();
System.out.print("Ingrese el Apellido y Nombre 1: ");
teclado.nextLine();
persona2=teclado.nextLine();
System.out.print("Ingrese la edad: ");
edad2=teclado.nextInt();
System.out.print("La persona de mayor edad es: ");
if(edad1>edad2) {
System.out.print(persona1);
}else {
System.out.print(persona2);
}
}
}
Cuando se ingresa una cadena con caracteres en blanco debemos tener
en cuenta en llamar al método nextLine()
Problema 3:
Solicitar el ingreso de dos apellidos. Mostrar un mensaje si son iguales o
distintos.
import java.util.Scanner;
public class Ejercicio_3 {
public static void main(String[] arg) {
Scanner teclado=new Scanner(System.in);
String apellido1, apellido2;
System.out.print("Ingrese primer apellido: ");
apellido1=teclado.next();
System.out.print("Ingrese segundo apellido: ");
apellido2=teclado.next();
if(apellido1.equals(apellido2)) {
System.out.print("Los Apellidos son Iguales");
}else {
System.out.print("Los Apellidos son Distintos");
}
}
}
if (apellido1.equals(apellido2)) {
}
if (apellido1.equalsIgnoreCase(apellido2)) {
System.out.print("Los apellidos son iguales sin tener en cuenta
mayúsculas y minúsculas");
} else {
System.out.print("Los apellidos son distintos sin tener en cuenta
mayúsculas y minúsculas");
}
Una clase es un molde del que luego se pueden crear múltiples objetos,
con similares características.
import java.util.Scanner;
public class Persona {
private Scanner teclado;
private String nombre;
private int edad;
Problema 2:
Desarrollar un programa que cargue los lados de un triángulo e
implemente los siguientes métodos: inicializar los atributos, imprimir el valor
del lado mayor y otro método que muestre si es equilátero o no.
import java.util.Scanner;
public class Triangulo {
private Scanner teclado;
private int lado1,lado2,lado3;
public void inicializar() {
teclado=new Scanner(System.in);
System.out.print("Lado 1: ");
lado1=teclado.nextInt();
System.out.print("Lado 2: ");
lado2=teclado.nextInt();
System.out.print("Lado 3: ");
lado3=teclado.nextInt();
}
public void ladoMayor() {
System.out.print("Lado Mayor: ");
if(lado1>lado2 && lado1>lado3) {
System.out.println(lado1);
}else {
if(lado2>lado1 && lado2>lado3) {
System.out.println(lado2);
}else {
System.out.println(lado3);
}
}
}
public void esEquilatero() {
if(lado1==lado2 && lado1==lado3) {
System.out.print("Es un Triangulo Equilatero");
}else {
System.out.print("NO es un Triangulo Equilatero");
}
}
El último método de esta clase verifica si los tres enteros ingresados son
iguales:
Problema 3:
Desarrollar una clase que represente un punto en el plano y tenga los
siguientes métodos: cargar los valores de x e y, imprimir en que cuadrante se
encuentra dicho punto (concepto matemático, primer cuadrante si x e y son
positivas, si x<0 e y>0 segundo cuadrante, etc.)
import java.util.Scanner;
public class Punto {
private Scanner teclado;
private int x,y;
import java.util.Scanner;
public class Cuadrado {
private Scanner teclado;
private int lado;
public void inicializar() {
teclado=new Scanner(System.in);
System.out.print("Ingrese el lado del cuadrado: ");
lado=teclado.nextInt();
}
public void imprimirArea() {
int area;
area=lado*lado;
System.out.println("El area del cuadrado es: "+area);
}
public void imprimirPerimetro() {
int perimetro;
perimetro=lado*4;
System.out.println("El perimetro del cuadrado es: "+perimetro);
}
public static void main(String[] arg) {
Cuadrado cuadrado1=new Cuadrado();
cuadrado1.inicializar();
cuadrado1.imprimirArea();
cuadrado1.imprimirPerimetro();
}
}
14 - Declaración de métodos.
Problema 1:
Confeccionar una clase que permita ingresar valores enteros por teclado
y nos muestre la tabla de multiplicar de dicho valor. Finalizar el programa al
ingresar el -1.
import java.util.Scanner;
public class TablaMultiplicar {
public void cargarValor() {
Scanner teclado=new Scanner(System.in);
int numero;
do {
System.out.print("Ingre el numero: ");
numero=teclado.nextInt();
if(numero!=-1)
calcular(numero);
}while(numero!=-1);
}
public void calcular(int n) {
int resultado;
for(int i=1;i<=10;i++) {
resultado=n*i;
System.out.println(n+"*"+i+"="+resultado);
}
}
public static void main(String[] arg) {
TablaMultiplicar tabla=new TablaMultiplicar();
tabla.cargarValor();
}
}
import java.util.Scanner;
public class MayorMenor {
public void cargarDatos() {
Scanner teclado=new Scanner(System.in);
int n1,n2,n3, mayor,menor;
System.out.print("Ingrese Numero 1: ");
n1=teclado.nextInt();
System.out.print("Ingrese Numero 2: ");
n2=teclado.nextInt();
System.out.print("Ingrese Numero 3: ");
n3=teclado.nextInt();
mayor=calcularMayor(n1,n2,n3);
menor=calcularMenor(n1,n2,n3);
System.out.println("El mayor de los numeros es: "+mayor);
System.out.println("El menor de los numeros es: "+menor);
}
public int calcularMayor(int v1, int v2, int v3) {
int m;
if(v1>v2 && v1>v3) {
m=v1;
}else {
if(v2>v1 && v2>v3) {
m=v2;
}else {
m=v3;
}
}
return m;
}
public int calcularMenor(int v1, int v2, int v3) {
int m;
if(v1<v2 && v1<v3) {
m=v1;
}else {
if(v2<v1 && v2<v3) {
m=v2;
}else {
m=v3;
}
}
return m;
}
public static void main(String[] arg) {
MayorMenor objeto1=new MayorMenor();
objeto1.cargarDatos();
}
}
import java.util.Scanner;
public class PruebaVector1 {
private Scanner teclado;
private float[] sueldos;
Lo mas común es utilizar una estructura repetitiva for para recorrer cada
componente del vector.
Utilizar el for nos reduce la cantidad de código, si no utilizo un for debería
en forma secuencial implementar el siguiente código:
System.out.print("Ingrese el sueldo:");
sueldos[0]=teclado.nextFloat();
System.out.print("Ingrese el sueldo:");
sueldos[1]=teclado.nextFloat();
System.out.print("Ingrese el sueldo:");
sueldos[2]=teclado.nextFloat();
System.out.print("Ingrese el sueldo:");
sueldos[3]=teclado.nextFloat();
System.out.print("Ingrese el sueldo:");
sueldos[4]=teclado.nextFloat();
Problema 2:
Definir un vector de 5 componentes de tipo float que representen las
alturas de 5 personas. Obtener el promedio de las mismas. Contar cuántas
personas son más altas que el promedio y cuántas más bajas.
import java.util.Scanner;
public class PruebaVector2 {
private Scanner teclado;
private float[] estaturas;
private float promedio;
Importante:
En este problema podemos observar una ventaja de tener almacenadas
todas las alturas de las personas. Si no conociéramos los vectores tenemos
que cargar otra vez las alturas por teclado para compararlas con el promedio.
Mientras el programa está en ejecución tenemos el vector alturas a nuestra
disposición. Es importante tener en cuenta que cuando finaliza la ejecución
del programa se pierde el contenido de todas las variables (simples y
vectores)
Problema 3:
Una empresa tiene dos turnos (mañana y tarde) en los que trabajan 8
empleados (4 por la mañana y 4 por la tarde)
import java.util.Scanner;
public class Turnos {
private Scanner teclado;
private float[] turnoManana;
private float[] turnoTarde;
sueldos=new int[5];
Con esto tenemos que cambiar todos los for que recorren dicho vector.
Ahora veremos que un vector al ser un objeto tiene un atributo llamado
length que almacena su tamaño. Luego podemos modificar todos los for con
la siguiente sintaxis:
for(int f=0;f<sueldos.length;f++) {
System.out.print("Ingrese valor de la componente:");
sueldos[f]=teclado.nextInt();
}
Problema 1:
Se desea almacenar los sueldos de operarios. Cuando se ejecuta el
programa se debe pedir la cantidad de sueldos a ingresar. Luego crear un
vector con dicho tamaño.
import java.util.Scanner;
public class Ejemplo5 {
private Scanner teclado;
private float[] sueldos;
17 - Vectores paralelos
Es decir hay una relación entre cada componente de los dos vectores.
Esta relación la conoce únicamente el programador y se hace para facilitar el
desarrollo de algoritmos que procesen los datos almacenados en las
estructuras de datos.
Problema 1:
for(int i=0;i<nombres.length;i++) {
if(edad[i]>=18) {
System.out.println(nombres[i]);
}
}
Problema 1:
Confeccionar un programa que permita cargar los nombres de 5 operarios y
sus sueldos respectivos. Mostrar el sueldo mayor y el nombre del operario.
import java.util.Scanner;
public class Ejemplo7 {
private Scanner teclado;
private String[] nombres;
private float[] sueldos;
19 - Vectores (ordenamiento)
El ordenamiento de un vector se logra intercambiando las componentes
de manera que:
vec[0] <= vec[1] <= vec[2] etc.
El contenido de la componente vec[0] sea menor o igual al contenido de
la componente vec[1] y así sucesivamente. Si se cumple lo dicho
anteriormente decimos que el vector está ordenado de menor a mayor.
Igualmente podemos ordenar un vector de mayor a menor.
Se puede ordenar tanto vectores con componentes de tipo int, float como
String. En este último caso el ordenamiento es alfabético.
Problema 1:
Se debe crear un vector donde almacenar 5 sueldos. Ordenar el vector
sueldos de menor a mayor.
Cuando f = 0 f = 1 f = 2 f = 3
Podemos ver cómo el valor más grande del vector desciende a la última
componente. Empleamos una variable auxiliar (aux) para el proceso de
intercambio:
aux=sueldos[f];
sueldos[f]=sueldos[f+1];
sueldos[f+1]=aux;
Al salir del for en este ejemplo el contenido del vector es el siguiente:
750
820
550
490
1200
Ahora bien, con los 4 elementos que nos quedan podemos hacer el
mismo proceso visto anteriormente, con lo cual quedará ordenado otro
elemento del vector. Este proceso lo repetiremos hasta que quede ordenado
por completo el vector.
Cuando k = 0
f = 0 f = 1 f = 2 f = 3
750 750 750 750
1200 820 820 820
820 1200 550 550
550 550 1200 490
490 490 490 1200
Cuando k = 1
f = 0 f = 1 f = 2 f = 3
750 750 750 750
820 550 550 550
550 820 490 490
490 490 820 820
1200 1200 1200 1200
Cuando k = 2
f = 0 f = 1 f = 2 f = 3
550 550 550 550
750 490 490 490
490 750 750 750
820 820 820 820
1200 1200 1200 1200
Cuando k = 3
f = 0 f = 1 f = 2 f = 3
490 490 490 490
550 550 550 550
750 750 750 750
820 820 820 820
1200 1200 1200 1200
Podemos concluir que la primera vez debemos hacer para este ejemplo 4
comparaciones, en la segunda ejecución del for interno debemos hacer 3
comparaciones y en general debemos ir reduciendo en uno la cantidad de
comparaciones.
Si bien el algoritmo planteado funciona, un algoritmo más eficiente, que
se deriva del anterior es el plantear un for interno con la siguiente estructura:
(f=0 ; f<4-k; f++) Es decir restarle el valor del contador del for externo.
import java.util.Scanner;
public class OrdenarVector1 {
private Scanner teclado;
private int[] sueldos;
Problema 2:
Definir un vector donde almacenar los nombres de 5 paises. Confeccionar
el algoritmo de ordenamiento alfabético.
import java.util.Scanner;
public class OrdenarVector2 {
private Scanner teclado;
private String[] paises;
Problema 1:
Confeccionar un programa que permita cargar los nombres de 5 alumnos
y sus notas respectivas. Luego ordenar las notas de mayor a menor. Imprimir
las notas y los nombres de los alumnos.
import java.util.Scanner;
public class OrdenarVector3 {
private Scanner teclado;
private String[] nombres;
private int[] notas;
for(int i=0;i<notas.length;i++) {
System.out.print("Ingrese nombre del Estudiante: ");
nombres[i]=teclado.next();
System.out.print("Ingrese la nota del Estudiante: ");
notas[i]=teclado.nextInt();
}
}
public void ordenar() {
String aux;
int aux_nota;
for(int i=0;i<notas.length-1;i++) {
for(int j=0;j<notas.length-1-i;j++) {
if(notas[j]<notas[j+1]){
aux_nota=notas[j];
notas[j]=notas[j+1];
notas[j+1]=aux_nota;
aux=nombres[j];
nombres[j]=nombres[j+1];
nombres[j+1]=aux;
}
}
}
}
public void imprimir() {
System.out.println("Notas Ordenadas de Mayor a Menor: ");
for(int i=0;i<notas.length;i++) {
System.out.println(nombres[i]+" : "+notas[i]);
}
}
public static void main(String[] arg) {
OrdenarVector3 objeto1=new OrdenarVector3();
objeto1.cargarDatos();
objeto1.ordenar();
objeto1.imprimir();
}
}
Problema 2:
Cargar en un vector los nombres de 5 países y en otro vector paralelo la
cantidad de habitantes del mismo. Ordenar alfabéticamente e imprimir los
resultados. Por último ordenar con respecto a la cantidad de habitantes (de
mayor a menor) e imprimir nuevamente.
import java.util.Scanner;
public class OrdenarVector4 {
private Scanner teclado;
private String[] paises;
private int[] habitantes;
aux_habitantes=habitantes[j];
habitantes[j]=habitantes[j+1];
habitantes[j+1]=aux_habitantes;
}
}
}
}
public void imprimir(String texto) {
System.out.println("Vector Ordenado "+texto);
for(int i=0;i<paises.length;i++) {
System.out.println(paises[i]+": "+habitantes[i]);
}
}
public void ordenarHabitantes() {
String aux_paises;
int aux_habitantes;
for(int i=0;i<paises.length-1;i++) {
for(int j=0;j<paises.length-1-i;j++) {
if(habitantes[j]<habitantes[j+1]) {
aux_habitantes=habitantes[j];
habitantes[j]=habitantes[j+1];
habitantes[j+1]=aux_habitantes;
aux_paises=paises[j];
paises[j]=paises[j+1];
paises[j+1]=aux_paises;
}
}
}
}
public static void main(String[] arg) {
OrdenarVector4 objeto1=new OrdenarVector4();
objeto1.cargarDatos();
objeto1.ordenarAlfabeticamente();
objeto1.imprimir("Alfabeticamente:");
objeto1.ordenarHabitantes();
objeto1.imprimir("Por Numero de Habitantes:");
}
}
Problema 1:
Crear una matriz de 3 filas por 5 columnas con elementos de tipo int,
cargar sus componentes y luego imprimirlas.
import java.util.Scanner;
public class Matriz1 {
private Scanner teclado;
private int[][] mat;
Cada vez que se repite en forma completa el for interno se carga una fila
completa, primero se carga la fila cero en forma completa, luego la fila uno y
finalmente la fila 2.
for(int i=0;i<3;i++) {
for(int j=0;j<5;j++) {
System.out.print("Ingrese valor: ");
mat[i][j]=teclado.nextInt();
}
}
Para imprimir la matriz de forma similar utilizamos dos for para acceder a
cada elemento de la matriz:
for(int i=0;i<3;i++) {
for(int j=0;j<5;j++) {
System.out.print(mat[i][j]+" ");
}
System.out.println();
}
Cada vez que se ejecuta todas las vueltas del for interno tenemos en
pantalla una fila completa de la matriz, por eso pasamos a ejecutar un salto
de línea (con esto logramos que en pantalla los datos aparezcan en forma
matricial):
System.out.println();
Problema 2:
Crear y cargar una matriz de 4 filas por 4 columnas. Imprimir la diagonal
principal.
x - - -
- x - -
- - x -
- - - x
Problema 3:
Crear y cargar una matriz de 3 filas por 4 columnas. Imprimir la primer fila.
Imprimir la última fila e imprimir la primer columna.
package matrices;
import java.util.Scanner;
public class Matriz3 {
private Scanner teclado;
private int[][] mat;
Como las matrices son objetos en Java disponemos por un lado del
atributo length que almacena la cantidad de filas de la matriz:
Problema 1:
Crear una matriz de n * m filas (cargar n y m por teclado) Imprimir la matriz
completa y la última fila.
import java.util.Scanner;
public class matriz5 {
private Scanner teclado;
private int[][] mat;
int filas,columnas;
System.out.print("Ingrese la cantidad de Filas de la Matriz: ");
filas=teclado.nextInt();
System.out.print("Ingrese la cantidad de Columnas de la Matriz:
");
columnas=teclado.nextInt();
mat=new int[filas][columnas];
for(int i=0;i<mat.length;i++) {
for(int j=0;j<mat[i].length;j++) {
System.out.print("Ingrese valor: ");
mat[i][j]=teclado.nextInt();
}
}
for(int i=0;i<mat[mat.length-1].length;i++) {
System.out.print(mat[mat.length-1][i]+" - ");
}
Problema 2:
Crear una matriz de n * m (cargar n y m por teclado) Imprimir el mayor
elemento y la fila y columna donde se almacena.
import java.util.Scanner;
public class matriz_7 {
private Scanner teclado;
private int[][] mat;
for(int i=0;i<mat.length;i++) {
for(int j=0;j<mat[i].length;j++) {
if(mat[i][j]>mayor) {
mayor=mat[i][j];
fila_mayor=i;
columna_mayor=j;
}
}
}
Problema 1:
Se tiene la siguiente información:
· Nombres de 4 empleados.
· Ingresos en concepto de sueldo, cobrado por cada empleado, en los últimos
3 meses.
Confeccionar el programa para:
a) Realizar la carga de la información mencionada.
b) Generar un vector que contenga el ingreso acumulado en sueldos en los
últimos 3 meses para cada empleado.
c) Mostrar por pantalla el total pagado en sueldos a todos los empleados en
los últimos 3 meses
d) Obtener el nombre del empleado que tuvo el mayor ingreso acumulado
import java.util.Scanner;
public class matriz9 {
private Scanner teclado;
private String[] empleados;
private float[][] sueldos;
private float[] total_sueldos;
public void cargarDatos() {
teclado=new Scanner(System.in);
empleados=new String[4];
sueldos=new float[4][3];
for(int i=0;i<sueldos.length;i++) {
System.out.print("Ingrese el nombre del Empleado: ");
empleados[i]=teclado.next();
for(int j=0;j<sueldos[i].length;j++) {
int contador=j+1;
System.out.print("Ingrese Sueldo mes "+contador+": ");
sueldos[i][j]=teclado.nextFloat();
}
}
}
public void sueldo_Acumulado() {
total_sueldos=new float[4];
float sumatoria;
for(int i=0;i<sueldos.length;i++) {
sumatoria=0;
for(int j=0;j<sueldos[i].length;j++) {
sumatoria=sumatoria+sueldos[i][j];
}
total_sueldos[i]=sumatoria;
}
}
public void imprimir_Total_Pagado() {
System.out.println("Total Pagado a los Empleados Ultimos 3
Meses");
for(int i=0;i<empleados.length;i++) {
System.out.println(empleados[i]+": "+total_sueldos[i]);
}
}
public void empleado_Mayor_Sueldo() {
float mayor_sueldo=total_sueldos[0];
int posicion=0;
for(int i=1;i<total_sueldos.length;i++) {
if(total_sueldos[i]>mayor_sueldo) {
mayor_sueldo=total_sueldos[i];
posicion=i;
}
}
System.out.println("El empleado con el mayor Sueldo es
"+empleados[posicion]+" con un sueldo de "+mayor_sueldo);
}
public static void main(String[] arg) {
matriz9 objeto1=new matriz9();
objeto1.cargarDatos();
objeto1.sueldo_Acumulado();
objeto1.imprimir_Total_Pagado();
objeto1.empleado_Mayor_Sueldo();
}
}
24 - Matrices irregulares
Java nos permite crear matrices irregulares. Se dice que una matriz es
irregular si la cantidad de elementos de cada fila varía. Luego podemos
imaginar una matriz irregular:
Como podemos ver la fila cero tiene reservado dos espacios, la fila uno
reserva cuatro espacios y la última fila reserva espacio para tres
componentes.
mat[0]=new int[2];
mat[1]=new int[4];
mat[2]=new int[3];
Luego la forma para acceder a sus componentes es similar a las matrices
regulares, siempre teniendo en cuenta y validando que exista dicha
componente:
mat[0][0]=120;
mat[0][2]=230;
Problema 1:
import java.util.Scanner;
public class matriz11 {
private Scanner teclado;
private int[][] mat;
Problema 1:
Se desea guardar los sueldos de 5 operarios en un vector. Realizar la
creación y carga del vector en el constructor.
import java.util.Scanner;
public class Constructor {
private Scanner teclado;
private float[] vector;
public Constructor() {
teclado=new Scanner(System.in);
vector=new float[5];
for(int i=0;i<5;i++) {
System.out.print("Ingrese el sueldo: ");
vector[i]=teclado.nextFloat();
}
}
public void imprimir() {
for(int i=0;i<5;i++) {
System.out.println(vector[i]);
}
}
public static void main(String[] arg) {
Constructor objeto1=new Constructor();
objeto1.imprimir();
}
}
public Alumno() {
teclado=new Scanner(System.in);
System.out.print("Ingrese el nombre: ");
nombre=teclado.next();
System.out.print("Ingrese la edad: ");
edad=teclado.nextInt();
}
public void imprimir() {
System.out.println("***Datos del Alumno***");
System.out.println("Nombre: "+nombre);
System.out.println("Edad: "+edad);
}
public void esMayor() {
if(edad>=18)
System.out.println(nombre+" Es mayor de edad");
else
System.out.println(nombre+" No es mayor de edad");
}
public static void main(String[] arg) {
Alumno objeto1=new Alumno();
objeto1.imprimir();
objeto1.esMayor();
}
}
Problema 3:
Plantear una clase TablaMultiplicar. Definir dos constructores uno con un
parámetro que llegue un entero indicando que tabla queremos ver y otro con
dos enteros que indique el primero que tabla queremos ver y el segundo
parámetro indica cuantos términos mostrar.
Si no llega la cantidad de términos a mostrar inicializar en 10 los términos
a mostrar
Métodos
boolean equals(String s1)
int length()
Retorna la cantidad de caracteres almacenados en el String.
String toUpperCase()
String toLowerCase()
Retorna un String con el contenido convertido todo a minúsculas.
Problema 1:
Confeccionar una clase que solicite el ingreso de dos String y luego
emplee los métodos más comunes de la clase String.
import java.util.Scanner;
public class Funciones {
public static void main(String[] arg) {
Scanner teclado=new Scanner(System.in);
String cad1,cad2;
System.out.print("Ingrese la Primera Cadena: ");
cad1=teclado.nextLine();
System.out.print("Ingrese la Segunda Cadena: ");
cad2=teclado.nextLine();
if(cad1.equals(cad2)==true)
System.out.println(cad1+" es exactamente igual a "+cad2);
else
System.out.println(cad1+" NO es exactamente igual a
"+cad2);
if(cad1.equalsIgnoreCase(cad2)==true)
System.out.println(cad1+" es igua a "+cad2+" sin tner en
cuenta mayusculas/minusculas");
else
System.out.println(cad1+" NO es igua a "+cad2+" sin tner en
cuenta mayusculas/minusculas");
if(cad1.compareTo(cad2)==0)
System.out.println(cad1+" es exactamente igua a "+cad2);
else {
if(cad1.compareTo(cad2)>0)
System.out.println(cad1+" es mayor alfabeticamente que
"+cad2);
else
System.out.println(cad2+" es mayor alfabeticamente que
"+cad1);
}
char letra=cad1.charAt(0);
System.out.println("El primer caracter de "+cad1+" es "+letra);
int largo=cad1.length();
System.out.println("El largo de la cadena "+cad1+" es "+largo);
String cad3=cad1.substring(0,3);
System.out.println("Los primeros 3 caracteres de "+cad1+" son
"+cad3);
int pos=cad1.indexOf(cad2);
if(pos==-1)
System.out.println(cad2+" no esta contenida en "+cad1);
else
System.out.println(cad2+" esta contenido en "+cad1+" a
partir de la posicion "+pos);
System.out.println(cad1+" convertida a Mayusculas es:
"+cad1.toUpperCase());
System.out.println(cad1+" convertida a minusculas es:
"+cad1.toLowerCase());
}
}