Está en la página 1de 18

CURSO DE PROGRAMACIN EN

JAVA
Curso bsico de iniciacin al lenguaje JAVA

Eugenio Romero
www.informatica97.tk
0

Curso bsico de iniciacin al lenguaje JAVA


Eugenio Romero

PROGRAMACIN IMPERATIVA

1.1. Programas de desarrollo.


Java Development Kit; ser el complemento de JAVA obligatorio para poder desarrollar a travs de un entorno
de trabajo como eclipse. Este nos permitir acceder a JDK y poder programar en JAVA.

CONSEJO DE ESTILO: ste consejo de estilo es aplicable a todo el curso y posteriores. La entrada de
informacin desde el teclado est siempre fijada. De manera que sta la podemos extraer fuera del mtodo
main y fijarla como una constante. Quedara el programa:
import java.util.Scanner;
public class ejemplo {
final static Scanner s = new Scanner(System.in);
public static void main(String[] args){
}
}

1.2. Primer programa: Hola mundo.


Crearemos un nuevo proyecto de JAVA a travs de eclipse (file new Project java project). Dentro de
este crearemos una nueva clase a la que llamaremos clase1 (por ejemplo). El cdigo del programa deber
quedar dentro de la clase (delimitada con llaves { }). Nos quedar el siguiente cdigo:
1
2
3
4
5
6
7

public class clase1 {


public static void main(String[] args){
System.out.println(Hola mundo);
System.out.print(mensaje);
}
}

El comando System.out.print() supone que lo que tenga contenido en el interior de los parntesis ser mostrado
en pantalla. Aadiendo a print la terminacin ln (println) se realizara un salto de lnea al terminar lo que
contenga el comando en ejecucin.
1.3. Atributos de JAVA.
Los utilizamos para dar capacidad a datos en la memoria RAM. Podemos aadir comentarios en el programa de
la manera //texto; que no sern ledos por el programa.
1

Curso bsico de iniciacin al lenguaje JAVA


Eugenio Romero
Antes de utilizar un atributo hay que declararlo, es decir, darle un nombre dentro de la memoria RAM y decir
que tipo de atributo es.
int x; es un nmero entero con nombre x (o cualquier otro que le demos). Al que daremos un valor
escribiendo x = a; siendo a un nmero entero cualquiera. No solo puede ser un valor nico, tambin puede ser
el resultado de una operacin o el valor aadido tras introducirlo por teclado (puntos posteriores). Se podr
mostrar en pantalla el valor del atributo si escribimos: System.out.print(+x); adems podemos aadir texto
dentro de unas comillas (+x);.
double x; se trata de un numero con infinitos decimales, el valor que demos a x se indica de la
misma forma que en el caso anterior. NO pueden repetirse variables en el mismo cdigo! Si no, el programa
tendra un error (podemos usar a, b, c, x, y, z conjuntos de letras: aux, sys cualquiera que se nos ocurra).
char x; Es un carcter, una palabra, un smbolo o un nmero. Se inicializan (introducen) entre comillas
simples (). x = a y para mostrarlos en pantalla se hace de la misma forma que los casos anteriores.
Para declarar diversas variables pertenecientes al mismo tipo de atributo podremos escribir: int x,y,z; de manera
que x, y, z, sern nmeros enteros.

1.4. Operaciones con Atributos.


Declarando: int a,b,c; y sabiendo que a y b son nmeros enteros y c el resultado de la operacin de los
anteriores tenemos:
SUMA c = a + b;
RESTA c = a b;
PRODUCTO c = a * b;
COCIENTE c = a / b;
RESTO DE LA DIVISION DE ENTEROS c = a % b;
Podemos eliminar la variable c y decir que a = a + b; que ser ms rpido y nos dar el mismo valor.
1.5. Introduccin de datos por teclado.
API de JAVA: conjunto de clases por defecto de JAVA; una clase es un conjunto de rdenes.
http://docs.oracle.com/javase/7/docs/api/.
Clase Scanner: recoge lo que se introduce por teclado y mete dicho valor a un atributo. La buscaremos dentro
de la API de JAVA y utilizaremos el comando import en las lneas superiores fuera de llaves y clases.
Entendemos el significado de mtodo como orden. El mtodo de tipo next sirve para introducir datos: asi
nextInt servir para introducir nmeros enteros o nextDouble para introducir nmeros con decimales.
Necesitaremos crear un objeto de la clase Scanner: Scanner s = new Scanner(System.in); donde s es una
variable.
2

Curso bsico de iniciacin al lenguaje JAVA


Eugenio Romero
1.6. Segundo programa: intercambiar valores de variables.
Queremos que las variables a = A y b = B intercambien su valor de manera que a = B y b = A.
Debemos introducir 3 variables: a,b,aux; donde aux ser una variable auxiliar. Diremos:
aux = a;
a = b;
b = aux;
De esta manera hemos intercambiado los valores de a y b sin perder ninguno. En el caso de decir:
a = b;
b = a;
Obtendramos los resultados: a = B y b = B puesto que las lneas se leen en orden descendente y si algo cambia
el valor de a, b leer el nuevo valor de a.

import java.util.Scanner;
public class ejercicio1 {
public static void main(String[] args){
int num1,num2,aux;
Scanner a = new Scanner(System.in);
System.out.print("introduce un valor
num1 = a.nextInt();
System.out.print("Introduce un valor
num2 = a.nextInt();
aux = num1;
num1 = num2;
num2 = aux;
System.out.println("El valor de num1
System.out.println("El valor de num2
}
}

en num1: ");
en num2: ");

es: "+num1);
es: "+num2);

2.1. If/else y ejemplo nmero par.


if es un comando condicional, se introduce como if(){ con un operador dentro del parntesis.
Operador
if(x==a){
if(x<a){
if(x>a){
if(x<=a){
if(x>=a){

Significado
Si x es igual a a entonces
Si x es menor que a entones
Si x es mayor que a entonces
Si x es menor o igual a a entonces
Si x es mayor o igual a a entonces
3

Curso bsico de iniciacin al lenguaje JAVA


Eugenio Romero
if(x!=a){

Si x es distinto de a entonces

else{
Si no
El programa solo leer lo que hay dentro de if si se cumple el operador, existen operadores distintos ya que
todos piden una exigencia: por ejemplo if(x%2=0){ significa que si el resto de dividir x entre 2 es cero entonces se
ejecutar lo que hay dentro de if.
EJERCICIO: comprobar si un numero dado por teclado es par.

import java.util.Scanner;
public class ejercicio1 {
public static void main(String[] args){
Scanner s = new Scanner(System.in);
int a;
System.out.print("Introduce un nmero: ");
a = s.nextInt();
if(a % 2 == 0){
System.out.println(a+" es un nmero par.");
}
else{
System.out.println(a+" no es un nmero par.");
}
}
}

2.2. Tipo boolean y condicionales anidados.


Un condicional anidado es un conjunto de condiciones que damos al programa para que las compare hasta
encontrar una verdadera. Es de la forma:
if(){
}
else if(){
}
Si colocsemos distintas condiciones solo en la forma if, se compararan todas ellas pudiendo ser verdadera ms
de una y en caso de que eso ocurra se ejecutaran varios resultados: esto supondra un error en el programa.
En el caso que hemos planteado como ejemplo el programa leera la condicin de if, en caso de que sea
verdadera else if no se leer, en cambio, si la condicin de if no se cumple, el programa leer la condicin de
else if que se ejecutar en caso de ser verdadera.
Esto da la opcin de repetirse muchas veces sin que el programa vea afectado en gran medida su rendimiento
(ser un programa eficiente), adems es una estructura simple que permite hacer infinitas comparaciones. Una
de las condiciones para hacer un buen programa es que este sea eficiente.
Atributo booleano
El atributo booleano solo puede tener dos valores: verdadero (true) o falso (false). Es de la forma:
4

Curso bsico de iniciacin al lenguaje JAVA


Eugenio Romero
boolean resultado;
resultado = true(false);
if(resultado){
}
else{
}
Escribiendo if(!resultado) el condicional lee lo contrario sin cambiar el valor de resultado.
2.3. Tipo char y estructura condicional switch.
El atributo de tipo char almacena un solo carcter sea letra (a, b, c), nmero (1, 2, 3) o smbolo ($, %, &). Lo
inicializamos como char variable; y se le asigna un valor de la manera variable = smbolo; ENTRE COMILLAS
SIMPLES y se puede comparar su valor con una estructura condicional if con cualquier operador. Tambin
podemos usar una estructura condicional switch. La estructura switch es similar a la estructura if, se inicializa
como:
switch(variable){
case smbolo:
Finalizando la lnea con dos puntos. Se pueden aadir todos los casos deseados siendo cada uno un smbolo los
cuales compara al introducir el atributo char. Por ejemplo:
char letra;
letra = a;
switch(letra){
case b:

case a:

case $:

El programa comparar todos los casos hasta encontrar el correcto y lo ejecutar. En este caso ejecutar lo que
hay dentro de case a: ,sin embargo, al no estar la lnea cerrada se ejecutaran todos los casos que haya a
continuacin. Para cerrar la lnea escribiremos:
case :

break;

Al final de la secuencia switch escribiremos default: cuya funcin es similar a la de else{.


switch funcionar con valores de una variable si utilizamos otro atributo como int o double. En cuyo caso
sabemos cmo introducirlos por teclado.

Curso bsico de iniciacin al lenguaje JAVA


Eugenio Romero
2.4. Condiciones mltiples.
Permiten aumentar el nmero de condiciones en un condicional de tipo if, de manera que esta pueda ser ms
restrictiva. Dos ejemplos de tipos de condicionales son && (y) y || (o). La primera (&&) es una conjuncin y es
aditiva a la hora de aadir condiciones, es decir, para que se ejecute el condicional if, el valor (si es un nmero)
debe cumplir TODAS las condiciones que se han impuesto mediante &&. En el caso de la segunda (||) se tratara
de una conjuncin o, en ella es SUFICIENTE que se cumpla una de las condiciones para ejecutar el condicional
if.
EJERCICIO: Programa que al introducir la hora sume un segundo y que la hora contine siendo de formato
correcto.
import java.util.Scanner;
public class ejercicio3 {
public static void main(String[] args){
int h,m,s;
Scanner t = new Scanner(System.in);
System.out.print("Introduce las horas: ");
h = t.nextInt();
System.out.print("Introduce los minutos: ");
m = t.nextInt();
System.out.print("Introduce los segundos: ");
s = t.nextInt();
if(h < 0 || h > 24 || m < 0 || m> 59 || s < 0 || s > 59){
System.out.println("La hora introducida no es vlida");
}
else{
System.out.println("La hora introducida es: "+h+":"+m+"."+s);
}
s = s += 1;
if(s == 60){
s = 0;
m += 1;
if(m == 60){
m = 0;
h = h += 1;
if(h == 25){
h = 0;
}
}
}
System.out.println("Un segundo mas tarde sern: "+h+":"+m+"."+s);
}
}

3.1. Bucles while y for.


Los bucles son estructuras que se repiten tantas veces como queramos. Existen tres tipos de bucles, los que ms
se suelen utilizar son while y for, el tercer tipo lo veremos ms adelante. Funcionamiento del bucle: siempre y
cuando la condicin introducida en el bucle sea verdadera se ejecutar el cdigo que este contenga (entre las
llaves { }) y se repetir indefinidamente mientras esa condicin siga siendo verdadera, de manera que debemos
6

Curso bsico de iniciacin al lenguaje JAVA


Eugenio Romero
introducir un contador para que no ocurra lo que llamamos un bucle infinito (el bucle jams dejara de
ejecutarse, el ordenador gastara todos sus recursos en ejecutar el bucle de manera infinita).
Bucle while(){

en el parntesis introducimos una condicin.

int i = 0;
while(i < 5){
System.out.print(i+ );
i += 1;
}
System.out.print(Estoy fuera del bucle);
Esto es un contador del bucle (mide las veces que se ha ejecutado) cada vez que el bucle se ejecuta la variable i
suma 1 a su valor anterior y este nuevo valor es mostrado por pantalla. La condicin que hace que el bucle se
ejecute es que i sea menor que 5 de manera que al sumar 1 cada vez que se ejecuta, llegar un momento en
que deje de ejecutarse (solo se ejecutara 4 veces, ya que 5 no es menor que 5). Por pantalla veremos el
siguiente resultado con este programa: 0 1 2 3 4 Estoy fuera del bucle.
Bucle for( ; ; ){
consta de 3 partes diferentes: (1 Inicializa el contador; 2 condicin del contador; 3
incremento del contador){
Esta diferencia con respecto al bucle while (el cual solo tiene 1 parte: condicin del contador) lo hace muy til
pues dar error si no hemos introducido el contador. Para elaborar el mismo contador que en el caso anterior
pero con este bucle deberamos escribir:
int j;
for(j = 0; j < 5; j += 1){
System.out.print(j+ );
}
System.out.print(Estoy fuera del contador);
El bucle for acta de manera distinta al bucle while a la hora de repetirse, antes de leer la condicin realiza el
incremento del contador, posteriormente comprueba que este siga cumpliendo la condicin. Por pantalla
volveramos a ver: 0 1 2 3 4 Estoy fuera del bucle.
Es apreciable que el cdigo que inicializa este contador es mucho ms corto lo que lo hace til para dar mayor
rendimiento al programa, lo cual no hace que sustituya totalmente a while que ser necesario en muchos casos.
Con el bucle for no es necesario declarar el contador fuera del bucle (int j), sino que podemos declararlo e
inicializarlo dentro del mismo bucle: for(int j = 0;j < 5; j++){
Escribir j++; es lo mismo que escribir j += 1; sirve para incrementar el valor del contador en una unidad de una
manera ms compacta (eficiencia del programa).

Curso bsico de iniciacin al lenguaje JAVA


Eugenio Romero

3.2. Ejercicio de bucles: mostrar todos los nmeros que hay entre dos nmeros introducidos por teclado.

import java.util.Scanner;
public class ejercicio2 {
public static void main(String[] args){
Scanner s = new Scanner(System.in);
boolean comp = true;
int a,b;
System.out.print("Introduce un nmero: ");
a = s.nextInt();
System.out.print("Introduce el segundo nmero: ");
b = s.nextInt();
if(a > b){
comp = false;
}
for(int i = a+1;i < b && comp; i++){
System.out.print(i+" ");
}
}
}

3.3. Bucle do while.


Este es el tercer tipo de bucle, del cual hablamos anteriormente. Se escribe:
do{

}while();
Dentro de las llaves introducimos las sentencias o cdigo y entre los parntesis impondremos la condicin del
bucle. El caso del contador sera:
int k;
do{
System.out.print(k+ );
k++;
}while(k < 5);
El resultado que veremos en pantalla ser: 0 1 2 3 4. Al igual que en los casos anteriores. La diferencia respecto
a los bucles while y for es que do while se ejecutar siempre al menos una vez, ya que la condicin se lee al final
del bucle y si esta se sigue cumpliendo el bucle comenzar de nuevo. En caso de que inicialmente no se cumpla
la condicin el bucle se ejecutar una sola vez ya que lee la condicin al final.

Curso bsico de iniciacin al lenguaje JAVA


Eugenio Romero
EJERCICIO: programa que pida dos nmeros y que el segundo sea forzosamente mayor que el primero.

import java.util.Scanner;
public class ejercicio2 {
public static void main(String[] args){
Scanner s = new Scanner(System.in);
boolean comp = true;
int a,b;
System.out.print("Introduce un nmero: ");
a = s.nextInt();
System.out.print("Introduce el segundo nmero: ");
b = s.nextInt();
if(a >= b){
comp = false;
System.out.print("Introduce un primer nmero mayor: "+a+" no es menor
que "+b);
}
else{
System.out.print(a+" es menor que "+b);
}
}
}

3.4. EJERCICIO: Realizar un men con varias opciones, usa una estructura switch.

import java.util.Scanner;
public class ejercicio4 {
public static void main(String[] args){
Scanner s = new Scanner(System.in);
int op;
do{
System.out.println("1.- Primera Opcin");
System.out.println("2.- Segunda Opcin");
System.out.println();
System.out.print("Elige una opcin: ");
op = s.nextInt();
}while(op < 1 || op > 2);
switch(op){
case 1:
System.out.println("Has escogido la primera opcin");
break;
case 2:
System.out.println("Has escogido la segunda opcin");
break;
}
}
}

Curso bsico de iniciacin al lenguaje JAVA


Eugenio Romero

3.5. Bucles anidados.


Los bucles anidados los realizamos de la forma:
for(;;){
for(...;;){

}
}
Con sus respectivas sentencias o lneas.
La explicacin de su funcionamiento es: cuando entramos en el primer bucle se comprueba como tal, de manera
que siendo cierta la condicin se ejecuta, a su vez entramos en el segundo bucle y hasta que la condicin del
segundo bucle no se falsa no saldremos de l, y volveremos al primero comprobando de nuevo la condicin y
repitindose el proceso hasta que sea falsa la condicin del primer bucle, es decir, el segundo bucle se ejecutar
tantas veces como dicte el primero.
No tiene por qu ser una estructura de un bucle for, puede ser cualquier otro, utilizando siempre el que nos
convenga.
3.6. Depurador de eclipse.
Depurador: es una herramienta que trae nuestro entorno de trabajo (en nuestro caso eclipse) la cual nos
ayudar a entender por qu lnea del cdigo va el programa y el valor de las variables en cada momento. Una
aplicacin es la comprobacin continuada del cdigo para encontrar errores (bugs).
Se abre en la siguiente ruta: Window > Open perspective > Debug
Se cierra en la ruta: Window > Open perspective > Java
En la vista del depurador clicaremos dos veces en una lnea (al margen) y al ejecutar el programa lo haremos en
el botn Debug (cuyo smbolo es un insecto). El programa se parar antes de ejecutar dicha lnea y no se
ejecutara hasta que demos la orden step over (siguiente paso) el cual tiene por defecto la tecla F6.

10

Curso bsico de iniciacin al lenguaje JAVA


Eugenio Romero

EJERCICIO: Realiza un programa que compruebe si un nmero introducido por teclado es primo o no.

import java.util.Scanner;
public class numerosprimos {
public static void main(String[] args){
int a;
boolean resultado = true;
Scanner s = new Scanner(System.in);
System.out.print("Introduce un nmero para comprobar si es primo: ");
a = s.nextInt();
for(int i = 2;i < a; i++){
if(a % i == 0){
resultado = false;
}
}
if(resultado){
System.out.println(a+" es primo.");
}
else{
System.out.println(a+" no es primo");
}
}
}

3.7. Eficiencia.
Programa que busque todos los nmeros primos entre 1 y 200.
1 solucin funcional.
public class numerosprimosentreayb {
public static void main(String[] args){
boolean resultado = true;
for(int i = 1;i < 200; i++){
resultado = true;
for(int j = 2; j < i; j++){
if(i % j == 0){
resultado = false;
}
}
if(resultado){
System.out.print(i+", ");
}
}
}
}

11

Curso bsico de iniciacin al lenguaje JAVA


Eugenio Romero
2 solucin eficiente.

public class numerosprimosentreayb {


public static void main(String[] args){
boolean resultado = true;
for(int i = 1;i < 200; i++){
resultado = true;
for(int j = 2; j < i && resultado; j++){
if(i % j == 0){
resultado = false;
}
}
if(resultado){
System.out.print(i+", ");
}
}
}
}

En la primera solucin el programa no es eficiente. El bucle da vueltas hasta que se cumple la condicin, por
ejemplo: cuando i = 100 el programa comprobar que no es primo en la primera vuelta, sin embargo, el bule
debe hacer que se cumpla la condicin j < i; es decir, se acabar cuando j = 100, esto supone unas 99 vueltas de
ms. En total dar miles de vueltas para comprobar todos los nmeros entre 1 y 200.
La solucin en sencilla, el bucle ha detectado que 100 no es primo, de manera que resultado ha perdido su
valor verdadero; ah tenemos la solucin: aadimos una condicin extra y obligamos a que resultado sea
verdadero, como ha fallado esa condicin, sale del segundo bucle. Nos hemos ahorrado ms de mil vueltas.
4.1. Qu es un vector?
Vector o array: sirve para almacenar varios datos del mismo tipo. Se declara de la manera: int[] vec = new int
[]; siendo int[] el tipo de vector, vec el nombre y [] la longitud ([5] o [2], etc.).
Para escribir dentro de un vector necesitaremos un bucle:
EJERCICIO: Escribir dentro de un vector y mostrar los nmeros introducidos.

import java.util.Scanner;
public class Bloque41 {
public static void main(String[] args){
int[] vec = new int[5];
Scanner s = new Scanner(System.in);
for(int i = 0; i < 5; i++){
System.out.print("Introduce un valor para la posicin "+i+" : ");
vec[i] = s.nextInt();
}
for(int i = 0; i < 5; i++){
System.out.println("posicion: "+i+" valor: "+vec[i]);
}
}
}

12

Curso bsico de iniciacin al lenguaje JAVA


Eugenio Romero
4.2. Nueva declaracin de vectores y ejemplo
Los vectores no son nicamente declarables con una longitud fija, sino que tambin pueden tener una longitud
diferente segn requiera el usuario de nuestro programa esta longitud se declara como una variable.
EJERCICIO: Calcular la media aritmtica de los elementos de un vector.

import java.util.Scanner;
public class bloque42 {
public static void main(String[] args){
int num;
Scanner s = new Scanner(System.in);
System.out.print("Introduce la cantidad de valores: ");
num = s.nextInt();
double[] vec = new double[num];
double total = 0;
for(int i = 0; i < num; i++){
System.out.print("Introduce el valor "+i+": ");
vec[i] = s.nextDouble();
}
for(int i = 0; i < num; i++){
total += vec[i];
}
total /= num; //esto es lo mismo que: total = total / num
System.out.print("La media aritmtica es: "+total);
}
}

4.3. Length y ordenamiento de un vector.


nombre.length nos es el mtodo que nos dar automticamente la longitud de un vector. A continuacin vamos
a ordenar un vector por el mtodo de la burbuja.

public class bloque43 {


public static void main(String[] args){
int[] vec = {7,5,7,1,6,9};
int aux;
for(int i = 0; i > vec.length; i++){
System.out.print(vec[i]+" ");
}
System.out.print("");
for(int i = 0; i < vec.length; i++){
for(int j = i + 1; j < vec.length; j++){
if(vec[j] < vec[i]){
aux = vec[j];
vec[j] = vec[i];
vec[i] = aux;
}
}
}
for(int i = 0; i < vec.length; i++){
System.out.print(vec[i]+" ");
}
}
}

13

Curso bsico de iniciacin al lenguaje JAVA


Eugenio Romero
Hemos realizado la ordenacin del vector por el mtodo de la burbuja. De manera que cambiando la condicin
de if se ordenar de mayor a menor (<) o de menor a mayor (>).
4.5. Comparacin de vectores y direccin de memoria.

public class bloque44 {


public static void main(String[] args){
int[] v1 = {4, 8, 2, 8, 9};
int[] v2 = {4, 8, 2, 8, 9};
boolean res = true;
if(v1.length != v2.length){
res = false;
}
for(int i = 0; i < v1.length && res; i++){
if(v1[i] != v2[i]){
res = false;
}
}
if(res){
System.out.println("Los vectores son iguales");
}
else{
System.out.println("Los vectores NO son iguales");
}
}
}

Una direccin de memoria es un identificador para una localizacin de memoria con la cual un programa
informtico o un dispositivo de hardware pueden almacenar un dato para su posterior reutilizacin.
Se considera que dos vectores son iguales, si y solo si, los elementos de uno coinciden con los del otro tanto en
valor como en posicin.

4.5. Qu son los String y cmo se comparan?


String o cadena de caracteres es un vector de tipo char que almacena frases. A diferencia de los vectores (que
los comparamos con un bucle) los String se pueden comparar directamente con un condicional if.
public class bloque45 {
public static void main(String[] args){
String a = "Hola mundo";
String b = "Hola mundo";
System.out.println(a.length());
if(a != b){
System.out.println("Son diferentes");
}
else{
System.out.println("Son iguales");
}
}
}

14

Curso bsico de iniciacin al lenguaje JAVA


Eugenio Romero

Donde a.length() nos dar la cantidad de caracteres en un nmero entero e if es la condicin de comparacin.
4.6. Scanner y cifrado de Csar.

import java.util.Scanner;
public class bloque461 {
public static void main(String[] args){
Scanner s = new Scanner(System.in);
String a;
System.out.println("Introduce una frase: ");
a = s.nextLine();
System.out.println(a);
}
}

El mtodo nextLine() permite recoger una frase por teclado e introducirla en un String.

15

Curso bsico de iniciacin al lenguaje JAVA


Eugenio Romero
EJERCICIO: ENCRIPTAR UN MENSAJE CON CIFRADO DE CSAR.
El Cifrado de Csar se conoce as por ser utilizado por los antiguos romanos. Consiste en colocar los caracteres
del abecedario de manera ordenada y aumentar cada uno con un contador (o desplazamiento) as si la letra a
cifrar es la a y el desplazamiento vale 1, el resultado ser b.
Para el contador que estamos utilizando como predeterminado el valor es 4, de manera que para volver a
transcribir el mensaje original solo tendremos que utilizar un contador de -4.

import java.util.Scanner;
public class bloque46 {
public static void main(String[] args){
Scanner s = new Scanner(System.in);
String frase1,frase2;
int desp = 4;
frase2 = "";
String min = "abcdefghijklmnopqrstuvwxyz !.;";
String may = "ABCDEFGHIJKLMNOPQRSTUVWXYZ ?,:";
System.out.print("Introduce la fase a encriptar: ");
frase1 = s.nextLine();
for(int i = 0; i < frase1.length(); i++){
for(int j = 0; j < min.length(); j++){
if(frase1.charAt(i) == min.charAt(j)){
if(j + desp >= min.length()){
frase2 += min.charAt((j + desp) % min.length());
}
else{
frase2 += min.charAt(j + desp);
}
}
else if(frase1.charAt(i) == may.charAt(j)){
if(j + desp >= may.length()){
frase2 += may.charAt((j + desp) % may.length());
}
else{
frase2 += may.charAt(j + desp);
}
}
}
}
System.out.println(frase2);
int op;
do{
System.out.println("1.- Confimar salir");
op = s.nextInt();
}while(op != 1);
}
}

16

Curso bsico de iniciacin al lenguaje JAVA


Eugenio Romero
4.7. Matrices en java.
Las matrices son un vector de vectores, sirven para almacenar datos. En Java las declaramos como:
tipo[][] nombre=new tipo[filas][columnas];
Para introducir valores a los elementos podemos acceder desde el cdigo:
nombre[fila][columna] = a;
Siendo a un valor del tipo de la matriz. La primera posicin no es la (1,1), sino la (0,0). Podrn ser de las
dimensiones que se quiera: monodimensional [], bidimensional [][], tridimensional [][][], tetradimensional
[][][][]
Podemos leer o introducir valores con un doble bucle, el primero recorre filas y el segundo columnas.

4.8. Comparacin de matrices y tipos de incrementos.


Cmo sabemos los String son vectores (matrices monodimensionales) de caracteres que se pueden comparar
directamente con un condicional. Sin embargo, las matrices numricas deben ser comparadas elemento a
elemento, para ello lo primero debemos comprobar que el nmero de columnas y filas de ambas es el mismo,
es decir, que ambas tengan las mismas dimensiones. Una vez cumplida esta condicin continuaremos con la
lectura elemento a elemento y la comparacin (si las matrices deben ser iguales, distintas, menores, mayores)
y guardando un valor falso en una variable boolean cuando la condicin (cualquiera de las tres que hemos
propuesto (misma dimensin de filas, dimensin de columnas y condicin de los elementos)) se incumpla.
Los incrementos ++ y -- existen de dos tipos:

a = b++
a = ++b
a = b-a = --b

guardara en a el valor original de b y luego en b el valor b+1.


guardara en a el valor b+1 y en b el valor b+1.
guardara en a el valor original de b y luego en b el valor b-1.
guardara en a el valor b-1 y en b el mismo valor (b-1).

17

También podría gustarte