Está en la página 1de 20

Computacin e Informtica

HDSW C-III

Matrices (cantidad F y C) Constructor Clase String


Como hemos visto para definir y crear la matriz utilizamos la siguiente sintaxis:
int[][] mat;
Creacin:
mat=new int[3][4];
Como las matrices son objetos en Java disponemos por un lado del atributo length que almacena la
cantidad de filas de la matriz:
System.out.println("Cantidad de filas de la matriz:" + mat.length);
Tambin podemos preguntarle a cada fila de la matriz la cantidad de elementos que almacena:
System.out.println("Cantidad de elementos de la primer fila:" + mat[0].length);

Problema 1:
Crear una matriz de n * m filas (cargar n y m por teclado) Imprimir la matriz completa y la ltima fila.
Programa:

importjava.util.Scanner;
publicclassMatrizFC{
privateScannerteclado;
privateint[][]mat;

publicvoidcargar(){
teclado=newScanner(System.in);
System.out.print("Cuantasfilatienelamatriz:");
intfilas=teclado.nextInt();
System.out.print("Cuantascolumnastienelamatriz:");
intcolumnas=teclado.nextInt();
mat=newint[filas][columnas];
for(intf=0;f<mat.length;f++){
for(intc=0;c<mat[f].length;c++){
System.out.print("Ingresecomponente:");
mat[f][c]=teclado.nextInt();
}
}
}

publicvoidimprimir(){
for(intf=0;f<mat.length;f++){
for(intc=0;c<mat[f].length;c++){
System.out.print(mat[f][c]+"");
}
System.out.println();
}
}

publicvoidimprimirUltimaFila(){

System.out.println("Ultimafila");
for(intc=0;c<mat[mat.length1].length;c++){
System.out.print(mat[mat.length1][c]+"");
}
}

publicstaticvoidmain(String[]ar){
MatrizFCma=newMatrizFC();
ma.cargar();
ma.imprimir();

Ing. Neicer Campos Vsquez

NCV20151HDSW

Computacin e Informtica

HDSW C-III
2

ma.imprimirUltimaFila();
}
}
En este ejemplo cada vez que se ejecute el programa el tamao de la matriz lo define el usuario, para ello
ingresamos por teclado dos enteros y seguidamente procedemos a crear la matriz con dichos valores:
System.out.print("Cuantas fila tiene la matriz:");
int filas=teclado.nextInt();
System.out.print("Cuantas columnas tiene la matriz:");
int columnas=teclado.nextInt();
mat=new int[filas][columnas];
Ahora las estructuras repetitivas las acotamos preguntando a la misma matriz la cantidad de filas y la
cantidad de elementos de cada fila(mat.length almacena la cantidad de filas de la matriz y mat[f].length
cuando f vale cero accedemos a la cantidad de elementos de la fila cero y as sucesivamente para cada
valor de f):
for(int f=0;f<mat.length;f++) {
for(int c=0;c<mat[f].length;c++) {
System.out.print("Ingrese componente:");
mat[f][c]=teclado.nextInt();
}
}
El algoritmo de impresin es idntico al visto anteriormente con la modificacin de las condiciones de los
for:
public void imprimir() {
for(int f=0;f<mat.length;f++) {
for(int c=0;c<mat[f].length;c++) {
System.out.print(mat[f][c]+" ");
}
System.out.println();
}
}
Para imprimir la ltima fila debemos disponer un valor fijo en el subndice de la fila (en este caso no
podemos disponer un nmero fijo sino preguntarle a la misma matriz la cantidad de filas y restarle uno ya
que las filas comienzan a numerarse a partir de cero: mat[mat.length-1][c])
Tambin la condicin del for debemos acceder al atributo length de la ltima fila mat[mat.length-1].length
for(int c=0;c<mat[mat.length-1].length;c++) {
System.out.print(mat[mat.length-1][c]+" ");
}

Problema 2:
Crear una matriz de n * m filas (cargar n y m por teclado) Imprimir el mayor elemento y la fila y columna
donde se almacena.
Programa:

importjava.util.Scanner;
publicclassMatrizFC{
privateScannerteclado;
privateint[][]mat;

publicvoidcargar(){
teclado=newScanner(System.in);
System.out.print("Cuantasfilatienelamatriz:");
intfilas=teclado.nextInt();
System.out.print("Cuantascolumnastienelamatriz:");
intcolumnas=teclado.nextInt();
mat=newint[filas][columnas];
for(intf=0;f<mat.length;f++){
for(intc=0;c<mat[f].length;c++){
System.out.print("Ingresecomponente:");
mat[f][c]=teclado.nextInt();
}

Ing. Neicer Campos Vsquez

NCV20151HDSW

Computacin e Informtica

HDSW C-III

}
}

publicvoidimprimirMayor(){

intmayor=mat[0][0];

intfilamay=0;

intcolumnamay=0;
for(intf=0;f<mat.length;f++){
for(intc=0;c<mat[f].length;c++){
if(mat[f][c]>mayor){
mayor=mat[f][c];
filamay=f;
columnamay=c;
}
}
}
System.out.println("Elelementomayores:"+mayor);
System.out.println("Seencuentraenlafila:"+filamay+"yenla
columna:"+columnamay);

publicstaticvoidmain(String[]ar){
MatrizFCma=newMatrizFC();
ma.cargar();
ma.imprimirMayor();
}
}
Para obtener el mayor elemento de la matriz y la fila y columna donde se ubica debemos inicializar una
variable mayor con el elemento de la fila cero y columna cero (esto lo hacemos suponiendo que en dicha
posicin se almacena el mayor):
int mayor=mat[0][0];
int filamay=0;
int columnamay=0;
Luego mediante dos for recorremos todos los elementos de la matriz y cada vez que encontramos un
elemento mayor al actual procedemos a actualizar la variable mayor y la posicin donde se almacena:
for(int f=0;f<mat.length;f++) {
for(int c=0;c<mat[f].length;c++) {
if (mat[f][c]>mayor) {
mayor=mat[f][c];
filamay=f;
columnamay=c;
}
}
}

Problemas Resueltos
1.

Crear una matriz de n * m filas (cargar n y m por teclado) Intercambiar la primer fila con la
segundo. Imprimir luego la matriz.

importjava.util.Scanner;
publicclassMatrizFC{
privateScannerteclado;
privateint[][]mat;

publicvoidcargar(){
teclado=newScanner(System.in);
System.out.print("Cuantasfilatienelamatriz:");
intfilas=teclado.nextInt();
System.out.print("Cuantascolumnastienelamatriz:");
intcolumnas=teclado.nextInt();

Ing. Neicer Campos Vsquez

NCV20151HDSW

Computacin e Informtica

HDSW C-III
4

mat=newint[filas][columnas];
for(intf=0;f<mat.length;f++){
for(intc=0;c<mat[f].length;c++){
System.out.print("Ingresecomponente:");
mat[f][c]=teclado.nextInt();
}
}
}

publicvoidintercambiar(){
for(intc=0;c<mat[0].length;c++){
intaux=mat[0][c];
mat[0][c]=mat[1][c];
mat[1][c]=aux;
}
}

publicvoidimprimir(){
for(intf=0;f<mat.length;f++){
for(intc=0;c<mat[f].length;c++){
System.out.print(mat[f][c]+"");
}
System.out.println();
}
}

publicstaticvoidmain(String[]ar){
MatrizFCma=newMatrizFC();
ma.cargar();
ma.intercambiar();
ma.imprimir();
}
}
2.

Crear una matriz de n * m filas (cargar n y m por teclado) Imprimir los cuatro valores que se
encuentran en los vrtices de la misma (mat[0][0] etc.)

importjava.util.Scanner;
publicclassMatrizFC{
privateScannerteclado;
privateint[][]mat;

publicvoidcargar(){
teclado=newScanner(System.in);
System.out.print("Cuantasfilatienelamatriz:");
intfilas=teclado.nextInt();
System.out.print("Cuantascolumnastienelamatriz:");
intcolumnas=teclado.nextInt();
mat=newint[filas][columnas];
for(intf=0;f<mat.length;f++){
for(intc=0;c<mat[f].length;c++){
System.out.print("Ingresecomponente:");
mat[f][c]=teclado.nextInt();
}
}

Ing. Neicer Campos Vsquez

NCV20151HDSW

Computacin e Informtica

HDSW C-III

publicvoidimprimirVertices(){

System.out.println("Vrticesuperiorizquierdo:");
System.out.println(mat[0][0]);

System.out.println("Vrticesuperiorderecho:");
System.out.println(mat[0][mat[0].length1]);

System.out.println("Vrticeinferiorizquierdo:");
System.out.println(mat[mat.length1][0]);

System.out.println("Vrticeinferiorderecho:");
System.out.println(mat[mat.length1][mat[mat.length1].length1]);

publicstaticvoidmain(String[]ar){
MatrizFCma=newMatrizFC();
ma.cargar();
ma.imprimirVertices();
}
}

Matrices y vectores paralelos


Dependiendo de la complejidad del problema podemos necesitar el empleo de vectores y matrices
paralelos.
Problema 1:
Se tiene la siguiente informacin:

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 informacin 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

Ing. Neicer Campos Vsquez

NCV20151HDSW

Computacin e Informtica

HDSW C-III
6

Programa:
importjava.util.Scanner;
publicclassMatriz9{
privateScannerteclado;
privateString[]empleados;
privateint[][]sueldos;
privateint[]sueldostot;

publicvoidcargar(){
teclado=newScanner(System.in);
empleados=newString[4];
sueldos=newint[4][3];
for(intf=0;f<empleados.length;f++){
System.out.print("Ingreseelnombredelempleado:");
empleados[f]=teclado.next();
for(intc=0;c<sueldos[f].length;c++){
System.out.print("Ingresesueldo:");
sueldos[f][c]=teclado.nextInt();
}
}
}

publicvoidcalcularSumaSueldos(){

sueldostot=newint[4];
for(intf=0;f<sueldos.length;f++){
intsuma=0;
for(intc=0;c<sueldos[f].length;c++){
suma=suma+sueldos[f][c];
}
sueldostot[f]=suma;
}
}

publicvoidimprimirTotalPagado(){

System.out.println("Totaldesueldospagadosporempleado.");
for(intf=0;f<sueldostot.length;f++){
System.out.println(empleados[f]+""+sueldostot[f]);
}
}

publicvoidempleadoMayorSueldo(){
intmay=sueldostot[0];
Stringnom=empleados[0];
for(intf=0;f<sueldostot.length;f++){
if(sueldostot[f]>may){

Ing. Neicer Campos Vsquez

NCV20151HDSW

Computacin e Informtica

HDSW C-III

may=sueldostot[f];
nom=empleados[f];
}
}
System.out.println("Elempleadoconmayorsueldoes"+nom+
"quetieneunsueldode"+may);
}

publicstaticvoidmain(String[]ar){
Matriz9ma=newMatriz9();
ma.cargar();
ma.calcularSumaSueldos();
ma.imprimirTotalPagado();
ma.empleadoMayorSueldo();
}
}
Para resolver este problema lo primero que hacemos es definir una matriz donde se almacenarn los
sueldos mensuales de cada empleado, un vector de tipo String donde almacenaremos los nombre de
cada empleado y finalmente definimos un vector paralelo a la matriz donde almacenaremos la suma de
cada fila de la matriz:
private String[] empleados;
private int[][] sueldos;
private int[] sueldostot;
En el mtodo de cargar inicializamos el vector con los nombres de los empleados y la matriz paralela
donde se almacenan los ltimos tres sueldos (previo a cargar procedemos a crear el vector y la matriz):
empleados=new String[4];
sueldos=new int[4][3];
for(int f=0;f<empleados.length;f++){
System.out.print("Ingrese el nombre del empleado:");
empleados[f]=teclado.next();
for(int c=0;c<sueldos[f].length;c++) {
System.out.print("Ingrese sueldo:");
sueldos[f][c]=teclado.nextInt();
}
}
El mtodo sumar sueldos crea el vector donde se almacenar la suma de cada fila de la matriz. Mediante
dos for recorremos toda la matriz y sumamos cada fila:
sueldostot=new int[4];
for(int f=0;f<sueldos.length;f++) {
int suma=0;
for(int c=0;c<sueldos[f].length;c++) {
suma=suma+sueldos[f][c];
}
sueldostot[f]=suma;
}
El mtodo imprimirTotalPagado tiene por objetivo mostrar los dos vectores (el de nombre de los
empleados y el que almacena la suma de cada fila de la matriz):
for(int f=0;f<sueldostot.length;f++) {
System.out.println(empleados[f]+" - "+sueldostot[f]);
}

Ing. Neicer Campos Vsquez

NCV20151HDSW

Computacin e Informtica

HDSW C-III

Por ltimo para obtener el nombre del empleado con mayor sueldo acumulado debemos inicializar dos
variables auxiliares con el primer elemento del vector de empleados y en otra auxiliar guardamos la primer
componente del vector sueldostot:
int may=sueldostot[0];
String nom=empleados[0];
for(int f=0;f<sueldostot.length;f++) {
if (sueldostot[f]>may) {
may=sueldostot[f];
nom=empleados[f];
}
}
System.out.println("El empleado con mayor sueldo es "+ nom + " que tiene
un sueldo de "+may);

Problema Resuelto
1.

Se desea saber la temperatura media trimestral de cuatro paises. Para ello se tiene como dato
las temperaturas medias mensuales de dichos paises.
Se debe ingresar el nombre del pas y seguidamente las tres temperaturas medias mensuales.
Seleccionar las estructuras de datos adecuadas para el almacenamiento de los datos en
memoria.
a - Cargar por teclado los nombres de los paises y las temperaturas medias mensuales.
b - Imprimir los nombres de las paises y las temperaturas medias mensuales de las mismas.
c - Calcular la temperatura media trimestral de cada pas.
c - Imprimr los nombres de las provincias y las temperaturas medias trimestrales.
d - Imprimir el nombre de la provincia con la temperatura media trimestral mayor.

2. importjava.util.Scanner;
3. publicclassMatriz10{
4. privateScannerteclado;
5. privateString[]paises;
6. privateint[][]tempmen;
7. privateint[]temptri;
8.
9. publicvoidcargar(){
10. teclado=newScanner(System.in);
11. paises=newString[4];
12. tempmen=newint[4][3];
13. for(intf=0;f<paises.length;f++){
14. System.out.print("Ingreseelnombredelpas:");
15. paises[f]=teclado.next();
16. for(intc=0;c<tempmen[f].length;c++){
17. System.out.print("Ingresetemperatura
mensual:");
18. tempmen[f][c]=teclado.nextInt();
19. }
20. }
21. }
22.
23. publicvoidimprimirTempMensuales(){
24. for(intf=0;f<paises.length;f++){
25.
System.out.print("Pais:"+paises[f]+":");
26. for(intc=0;c<tempmen[f].length;c++){
27. System.out.print(tempmen[f][c]+"");
28. }
29. System.out.println();
30. }
31. }
32.

Ing. Neicer Campos Vsquez

NCV20151HDSW

Computacin e Informtica

HDSW C-III

33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.

publicvoidcalcularTemperaturaTri(){
temptri=newint[4];
for(intf=0;f<tempmen.length;f++){
intsuma=0;
for(intc=0;c<tempmen[f].length;c++){
suma=suma+tempmen[f][c];
}
temptri[f]=suma/3;
}
}

publicvoidimprimirTempTrimestrales(){
System.out.println("Temperaturastrimestrales.");
for(intf=0;f<paises.length;f++){
System.out.println(paises[f]+""+temptri[f]);
}
}

publicvoidpaisMayorTemperaturaTri(){
intmay=temptri[0];
Stringnom=paises[0];
for(intf=0;f<paises.length;f++){
if(temptri[f]>may){
may=temptri[f];
nom=paises[f];
}
}
60. System.out.println("Paiscontemperaturatrimestralmayores"+
nom+"quetieneunatemperaturade"+may);

61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.

publicstaticvoidmain(String[]ar){
Matriz10ma=newMatriz10();
ma.cargar();
ma.imprimirTempMensuales();
ma.calcularTemperaturaTri();
ma.imprimirTempTrimestrales();
ma.paisMayorTemperaturaTri();
}
}

Constructor de la clase
En Java podemos definir un mtodo que se ejecute inicialmente y en forma automtica. Este mtodo se lo
llama constructor.
El constructor tiene las siguientes caractersticas:

Tiene el mismo nombre de la clase.

Es el primer mtodo que se ejecuta.

Se ejecuta en forma automtica.

No puede retornar datos.

Se ejecuta una nica vez.

Ing. Neicer Campos Vsquez

NCV20151HDSW

Computacin e Informtica

HDSW C-III
10

Un constructor tiene por objetivo inicializar atributos.

Problema 1:
Se desea guardar los sueldos de 5 operarios en un vector. Realizar la creacin y carga del vector en el
constructor.
Programa:

importjava.util.Scanner;
publicclassOperarios{
privateScannerteclado;
privateint[]sueldos;
publicOperarios()
{
teclado=newScanner(System.in);
sueldos=newint[5];
for(intf=0;f<5;f++){
System.out.print("Ingresevalordelacomponente:");
sueldos[f]=teclado.nextInt();
}
}
publicvoidimprimir(){
for(intf=0;f<5;f++){
System.out.println(sueldos[f]);
}
}
publicstaticvoidmain(String[]ar){
Operariosop=newOperarios();
op.imprimir();
}
}
Como podemos ver es el mismo problema que resolvimos cuando vimos vectores. La diferencia es que
hemos sustituido el mtodo cargar con el constructor:
public Operarios()
{
teclado=new Scanner(System.in);
sueldos=new int[5];
for(int f=0;f<5;f++) {
System.out.print("Ingrese valor de la componente:");
sueldos[f]=teclado.nextInt();
}
}
Como la clase se llama Operarios el constructor tiene el mismo nombre, no disponemos la palabra clave
void ya que el constructor no puede retornar datos.
La ventaja de plantear un constructor en lugar de definir un mtodo con cualquier nombre es que se
llamar en forma automtica cuando se crea un objeto de esta clase:
public static void main(String[] ar) {
Operarios op=new Operarios();
Cuando se crea el objeto op se llama al mtodo constructor.
Finalmente llamamos al mtodo imprimir:
op.imprimir();
Problema 2:

Ing. Neicer Campos Vsquez

NCV20151HDSW

Computacin e Informtica

HDSW C-III

Plantear una clase llamada Alumno y definir como atributos su nombre y su edad. En el constructor
realizar la carga de datos. Definir otros dos mtodos para imprimir los datos ingresados y un mensaje si
es mayor o no de edad (edad >=18)
Programa:

importjava.util.Scanner;
publicclassAlumno{
privateScannerteclado;
privateStringnombre;
privateintedad;

publicAlumno(){
teclado=newScanner(System.in);
System.out.print("Ingresenombre:");
nombre=teclado.next();
System.out.print("Ingreseedad:");
edad=teclado.nextInt();
}

publicvoidimprimir(){
System.out.println("Nombre:"+nombre);
System.out.println("Edad:"+edad);
}

publicvoidesMayorEdad(){
if(edad>=18){
System.out.print(nombre+"esmayordeedad.");
}else{
System.out.print(nombre+"noesmayordeedad.");
}
}

publicstaticvoidmain(String[]ar){
Alumnoalumno1=newAlumno();
alumno1.imprimir();
alumno1.esMayorEdad();
}
}
Declaramos la clase Persona, sus tres atributos y definimos el constructor con el mismo nombre de la
clase:
public class Alumno {
private Scanner teclado;
private String nombre;
private int edad;
public Alumno() {
teclado=new Scanner(System.in);
System.out.print("Ingrese nombre:");
nombre=teclado.next();
System.out.print("Ingrese edad:");
edad=teclado.nextInt();
}
En la main el constructor se llama en forma automtica cuando creamos un objeto de la clase Alumno:
public static void main(String[] ar) {
Alumno alumno1=new Alumno();
Los otros dos mtodos deben llamarse por su nombre y en el orden que necesitemos:
alumno1.imprimir();
alumno1.esMayorEdad();
Problemas propuestos

Ing. Neicer Campos Vsquez

NCV20151HDSW

11

Computacin e Informtica
1.

HDSW C-III

Confeccionar una clase que represente un empleado. Definir como atributos su nombre y su
sueldo. En el constructor cargar los atributos y luego en otro mtodo imprimir sus datos y por
ltimo uno que imprima un mensaje si debe pagar impuestos (si el sueldo supera a 3000).

2. importjava.util.Scanner;
3. publicclassEmpleadoFabrica{
4. privateScannerteclado;
5. Stringnombre;
6. floatsueldo;
7.
8. publicEmpleadoFabrica(){
9. teclado=newScanner(System.in);
10. System.out.print("Ingreseelnombredelempleado:");
11. nombre=teclado.next();
12. System.out.print("Ingresesusueldo:");
13. sueldo=teclado.nextFloat();
14. }
15.
16. publicvoidpagaImpuestos(){
17. if(sueldo>3000){
18. System.out.print("Debeabonarimpuestos");
19. }else{
20. System.out.print("Nopagaimpuestos");
21. }
22. }
23.
24. publicstaticvoidmain(String[]ar){
25. EmpleadoFabricaempleado1;
26. empleado1=newEmpleadoFabrica();
27. empleado1.pagaImpuestos();
28. }
29. }

30. Implementar la clase operaciones. Se deben cargar dos valores enteros en el constructor,
calcular su suma, resta, multiplicacin y divisin, cada una en un mtodo, imprimir dichos
resultados.

importjava.util.Scanner;
publicclassOperacionesCalculo{
privateScannerteclado;
intvalor1,valor2;

publicOperacionesCalculo(){
teclado=newScanner(System.in);
System.out.print("Ingreseprimervalor:");
valor1=teclado.nextInt();
System.out.print("Ingresesegundovalor:");
valor2=teclado.nextInt();
}

publicvoidsumar(){

Ing. Neicer Campos Vsquez

NCV20151HDSW

12

Computacin e Informtica

HDSW C-III

intsuma;
suma=valor1+valor2;
System.out.println("Lasumaes:"+suma);
}

publicvoidrestar(){
intresta;
resta=valor1valor2;
System.out.println("Larestaes:"+resta);
}

publicvoidmultiplicar(){
intmultiplicacion;
multiplicacion=valor1*valor2;
System.out.println("Lamultiplicacines:"+multiplicacion);
}

publicvoiddividir(){
intdivision;
division=valor1/valor2;
System.out.println("Ladivisines:"+division);
}

publicstaticvoidmain(String[]ar){

OperacionesCalculoopera=newOperacionesCalculo();
opera.sumar();
opera.restar();
opera.multiplicar();
opera.dividir();
}
}

Clase String
La clase String est orientada a manejar cadenas de caracteres. Hasta este momento hemos utilizado
algunos mtodos de la clase String (equals, compareTo)
Ahora veremos otro conjunto de mtodos de uso comn de la clase String:
Mtodos
boolean equals(String s1)

Como vimos el mtodo equals retorna true si el contenido de caracteres del parmetro s1 es
exactamente igual a la cadena de caracteres del objeto que llama al mtodo equals.
boolean equalsIgnoreCase(String s1)

El funcionamiento es casi exactamente igual que el mtodo equals con la diferencia que no tiene
en cuenta maysculas y minsculas (si comparamos 'Ana' y 'ana' luego el mtodo
equalsIgnoreCase retorna true)
int compareTo(String s1)

Ing. Neicer Campos Vsquez

NCV20151HDSW

13

Computacin e Informtica

HDSW C-III

Este mtodo retorna un 0 si el contenido de s1 es exactamente igual al String contenido por el


objeto que llama al mtodo compareTo. Retorna un valor >0 si el contenido del String que llama
al mtodo compareTo es mayor alfabticamente al parmetro s1.
char charAt(int pos)

Retorna un caracter del String, llega al mtodo la posicin del caracter a extraer.
int length()

Retorna la cantidad de caracteres almacenados en el String.


String substring(int pos1,int pos2)

Retorna un substring a partir de la posicin indicada en el parmetro pos1 hasta la posicin pos2
sin incluir dicha posicin.
int indexOf(String s1)

Retorna -1 si el String que le pasamos como parmetro no est contenida en la cadena del
objeto que llama al mtodo. En caso que se encuentre contenido el String s1 retorna la posicin
donde comienza a repetirse.
String toUpperCase()

Retorna un String con el contenido convertido todo a maysculas.


String toLowerCase()

Retorna un String con el contenido convertido todo a minsculas.

Problema 1:
Confeccionar una clase que solicite el ingreso de dos String y luego emplee los mtodos ms comunes de
la clase String.
Programa:

importjava.util.Scanner;
publicclassCadena1{
publicstaticvoidmain(String[]ar){
Scannerteclado=newScanner(System.in);
Stringcad1;
Stringcad2;
System.out.print("Ingreselaprimercadena:");
cad1=teclado.nextLine();
System.out.print("Ingreselasegundacadena:");
cad2=teclado.nextLine();
if(cad1.equals(cad2)==true){
System.out.println(cad1+"esexactamenteiguala"+cad2);
}else{
System.out.println(cad1+"noesexactamenteiguala"+cad2);
}
if(cad1.equalsIgnoreCase(cad2)==true){
System.out.println(cad1+"esiguala"+cad2+"sinteneren
cuentamaysculas/minsculas");
}else{

Ing. Neicer Campos Vsquez

NCV20151HDSW

14

Computacin e Informtica

HDSW C-III

System.out.println(cad1+"noesiguala"+cad2+"sinteneren
cuentamaysculas/minsculas");
}
if(cad1.compareTo(cad2)==0){
System.out.println(cad1+"esexactamenteiguala"+cad2);
}else{
if(cad1.compareTo(cad2)>0){
System.out.println(cad1+"esmayoralfabticamenteque
"+cad2);
}else{
System.out.println(cad2+"esmayoralfabticamenteque
"+cad1);
}
}
charcarac1=cad1.charAt(0);
System.out.println("Elprimercaracterde"+cad1+"es"+carac1);
intlargo=cad1.length();
System.out.println("EllargodelString"+cad1+"es"+largo);
Stringcad3=cad1.substring(0,3);
System.out.println("Losprimerostrescaracteresde"+cad1+"son
"+cad3);
intposi=cad1.indexOf(cad2);
if(posi==1){
System.out.println(cad2+"noestcontenidoen"+cad1);
}else{
System.out.println(cad2+"estcontenidoen"+cad1+"apartirde
laposicin"+posi);
}
System.out.println(cad1+"convertidoamaysculases
"+cad1.toUpperCase());
System.out.println(cad1+"convertidoaminsculases
"+cad1.toLowerCase());

}
}
Para cargar los dos String utilizamos en este caso el mtodo nextLine para permitir ingresar espacios en
blanco:
System.out.print("Ingrese la primer cadena:");
cad1=teclado.nextLine();
System.out.print("Ingrese la segunda cadena:");
cad2=teclado.nextLine();

Problemas Resueltos
1.

Realizar una clase, que permita cargar una direccin de mail en el constructor, luego en otro
mtodo mostrar un mensaje si contiene el caracter '@'.

importjava.util.Scanner;
publicclassCadena2{
privateScannerteclado;
privateStringmail;
publicCadena2(){
teclado=newScanner(System.in);
System.out.print("Ingreseunmail:");
mail=teclado.nextLine();
}

publicvoidverificarArroba(){
booleanexiste=false;
for(intf=0;f<mail.length();f++){

Ing. Neicer Campos Vsquez

NCV20151HDSW

15

Computacin e Informtica

HDSW C-III

if(mail.charAt(f)=='@'){
existe=true;
}
}
if(existe==true){
System.out.println(mail+"contieneelcaracter@");
}else{
System.out.println(mail+"nocontieneelcaracter@");
}
}
publicstaticvoidmain(String[]ar){
Cadena2cad=newCadena2();
cad.verificarArroba();
}
}
1.

Cargar
un
String
por
teclado
e
implementar
los
siguientes
mtodos:
a) Imprimir la primera mitad de los caracteres de la cadena.
b) Imprimir el ltimo caracter.
c) Imprimirlo en forma inversa.
d) Imprimir cada caracter del String separado con un guin.
e) Imprimir la cantidad de vocales almacenadas.
f) Implementar un mtodo que verifique si la cadena se lee igual de izquierda a derecha tanto
como de derecha a izquierda (ej. neuquen se lee igual en las dos direcciones)

importjava.util.Scanner;
publicclassCadena3{
privateScannerteclado;
privateStringcad;
publicCadena3(){
teclado=newScanner(System.in);
System.out.print("Ingreseunacadena:");
cad=teclado.nextLine();
}
publicvoidprimerMitad(){

Stringparte;

parte=cad.substring(0,cad.length()/2);
System.out.println("Primermitaddecaraceres:"+parte);
}

publicvoidultimoCaracter(){

charultimo=cad.charAt(cad.length()1);
System.out.println("Ultimocaracter:"+ultimo);
}

publicvoidformaInversa(){

System.out.println("Impresinenformainversa:");
for(intf=cad.length()1;f>=0;f){
System.out.print(cad.charAt(f));
}
System.out.println();
}

publicvoidconGuion(){
System.out.println("Separadoporguiones:");
for(intf=0;f<cad.length();f++){
System.out.print(cad.charAt(f)+"");
}
System.out.println();

Ing. Neicer Campos Vsquez

NCV20151HDSW

16

Computacin e Informtica

HDSW C-III

publicvoidcantidadVocales(){
intcant=0;
for(intf=0;f<cad.length();f++){
if(cad.charAt(f)=='a'||cad.charAt(f)=='e'||
cad.charAt(f)=='i'||cad.charAt(f)=='o'||
cad.charAt(f)=='u'||cad.charAt(f)=='A'||
cad.charAt(f)=='E'||cad.charAt(f)=='I'||
cad.charAt(f)=='O'||cad.charAt(f)=='U'){
cant++;
}
}
System.out.println("Cantidaddevocales:"+cant);
}

publicvoidesCapicua(){
intcant=0;
for(intf=0;f<cad.length()/2;f++){
if(cad.charAt(f)==cad.charAt(cad.length()1f)){
cant++;
}
}
if(cant==cad.length()/2){
System.out.println("Escapicalacadena"+cad);
}else{
System.out.println("Noescapicalacadena"+cad);
}
}
publicstaticvoidmain(String[]ar){
Cadena3cad=newCadena3();
cad.primerMitad();
cad.ultimoCaracter();
cad.formaInversa();
cad.conGuion();
cad.cantidadVocales();
cad.esCapicua();
}
}
2.

Desarrollar un programa que solicite la carga de una clave. La clase debe tener dos mtodos uno
para la carga y otro que muestre si la clave es la correcta (la clave a comparar es "123abc")

importjava.util.Scanner;
publicclassCadena4{
privateScannerteclado;
privateStringclave;

publicCadena4(){
teclado=newScanner(System.in);
System.out.print("Ingreseclave:");
clave=teclado.nextLine();
}

publicvoidverificarClave(){
if(clave.equals("123abc")==true){

Ing. Neicer Campos Vsquez

NCV20151HDSW

17

Computacin e Informtica

HDSW C-III

System.out.println("Seingreslaclaveenforma
correcta");
}else{
System.out.println("Noseingreslaclaveenforma
correcta");
}
}

publicstaticvoidmain(String[]ar){
Cadena4cad=newCadena4();
cad.verificarClave();
}
}
3.

Confeccionar un programa que permita cargar los nombres de 5 personas y sus mail, luego
implementar los siguientes mtodos:
a) Mostrar por pantalla los datos.
b) Consulta del mail ingresando su nombre.
c) Mostrar los mail que no tienen el carcter @.

importjava.util.Scanner;
publicclassCadena5{
privateScannerteclado;
privateString[]nombres;
privateString[]mail;

publicCadena5(){
teclado=newScanner(System.in);
nombres=newString[5];
mail=newString[5];
for(intf=0;f<nombres.length;f++){
System.out.print("Ingresenombre:");
nombres[f]=teclado.nextLine();
System.out.print("Ingresemail");
mail[f]=teclado.nextLine();
}
}

publicvoidlistar(){
for(intf=0;f<nombres.length;f++){
System.out.println(nombres[f]+""+mail[f]);
}
}

publicvoidconsultaMail(){
Stringaux;
System.out.print("Ingreseelnombredelapersona:");
aux=teclado.nextLine();
booleanexiste=false;
for(intf=0;f<nombres.length;f++){
if(aux.equals(nombres[f])){
System.out.println("Maildelapersona:"+mail[f]);
existe=true;
}
}
if(existe==false){
System.out.println("Noexisteunapersonaconese
nombre.");
}
}

Ing. Neicer Campos Vsquez

NCV20151HDSW

18

Computacin e Informtica

HDSW C-III
19

publicvoidsinArroba(){
for(intf=0;f<mail.length;f++){
booleantiene=false;
for(intk=0;k<mail[f].length();k++){
if(mail[f].charAt(k)=='@'){

tiene=true;

}
}
if(tiene==false){
System.out.println(mail[f]+"notiene@");
}
}
}

publicstaticvoidmain(String[]ar){
Cadena5cad=newCadena5();
cad.listar();
cad.consultaMail();
cad.sinArroba();
}
}

4.

Codifique un programa que permita cargar una oracin por teclado, luego mostrar cada palabra
ingresada en una lnea distinta.
Por ejemplo si cargo:
La maana est fra.
Debe aparecer:
La
maana
est
fra.

importjava.util.Scanner;
publicclassCadena6{
privateScannerteclado;
privateStringoracion;

publicCadena6(){
teclado=newScanner(System.in);
System.out.print("Ingreseoracin:");
oracion=teclado.nextLine();
}

publicvoidimprimir(){
for(intf=0;f<oracion.length();f++){
if(oracion.charAt(f)==''){
System.out.println();
}else{
System.out.print(oracion.charAt(f));
}
}
}

Ing. Neicer Campos Vsquez

NCV20151HDSW

Computacin e Informtica

HDSW C-III
20

publicstaticvoidmain(String[]ar){
Cadena6cad=newCadena6();
cad.imprimir();
}
}

Ing. Neicer Campos Vsquez

NCV20151HDSW

También podría gustarte