Programación Java básica 7 - 1

CAPITULO

7

Programación Java básica
Objetivos
• • • • • • • • • • •

Establecer cómo pasar del modelo de Objetos al lenguaje de programación. Identificar los componentes de un programa en Java. Representar en código Java las principales relaciones de asociación de clases Identificar y definir los diferentes tipos de datos primitivos. Identificar, definir y realizar operaciones con los operadores disponibles en Java. Definir y manejar bidimensionales. arreglos unidimensionales y

Identificar, definir y caracterizar las instrucciones de control de flujo en Java. Aplicar las instrucciones selección y de ciclos o repeticiones en la solución de problemas. Aplicar las instrucciones de selección múltiple en la solución de problemas. Aplicar las instrucciones para manejo de saltos. Uso de los componentes JOPtionPane, ScrollPane y JTextArea para la entrada y salida.

Programación Java básica: Programación Java básica 7 - 2

Introducción
En los capítulos anteriores se han presentado ejemplos y ejercicios que involucran la utilización de variables que almacenan tipos específicos de datos, así como constantes y operadores para realizar operaciones tanto aritméticas como relacionales. Para tal efecto se han diseñado aplicaciones que le dan forma a las clases asociadas con cada uno de los problemas a resolver. Aunque no se ha dado la estructura formal de las clases, tanto las aplicaciones como las applets ilustradas le dan al lector estudioso una idea de la estructura general que tienen estos tipos de programas en Java. Java es un lenguaje orientado a objetos, todo en Java se maneja como objetos. En las interacciones de los objetos se precisa el intercambio de mensajes y la realización de determinadas tareas, que involucran variables y operaciones a realizar entre estas. La manera como la información pueda ser almacenada en un campo o en una variable, está relacionada con el tipo de información que dicha variable almacena, para diferenciar una variable de otra en cuanto a lo que puede almacenar se utiliza el término tipo de dato. Java como lenguaje de programación, maneja varios tipos de datos, que se pueden utilizar al declarar variables y arreglos o matrices, definir también el tipo de dato (valores) que puede almacenar dicha variable, arreglo o matriz}. En este capítulo se tratará en detalle el tema de los tipos de datos, así como sus rangos(valores que puede tomar un dato un tipo dado) y operaciones para su manipulación. Dentro de los tipos de datos estructurados se encuentran los arreglos o vectores que son conjuntos de elementos de un tipo dado a cada uno de los cuales se puede acceder mediante un nombre y un indice que indica la posición del elemento dentro del arreglo. Los arreglos tanto unidimensionales como bidimensionales se tratarán, junto con algunas aplicaciones para la manipulación este tipo de datos. Se plantea una serie de ejercicios que el lector debe realizar a fin de desarrollar las habilidades necesarias para incursionar con propiedad en el desarrollo de aplicaciones en Java. Se utilizará componentes Swing para denotar la entrada/salida. En contraste con la entrada salida de datos vía linea de comandos,presentada en algunos ejemplos de los capítulos anteriores.

Programación Java básica: Introducción 7 - 3 En ausencia de instrucciones de control del flujo en un programa, su ejecución se realiza en una sola dirección, de arriba a abajo, como está escrito el programa en lenguaje fuente. En el desarrollo de algoritmos mediante el lenguaje algorítmico, se presentaron las instrucciones para su control de flujo, fundamentalmente para selecciones, repeticiones y selecciones múltiples, las cuales hacen que el flujo se desvíe de su sentido natural de arriba-abajo. En el lenguaje de programación, a las instrucciones que se encargan de controlar el flujo de la ejecución de un programa se les denomina instrucciones de control. Este control se hace de la misma manera o similar, en todos los lenguajes de programación actuales. Las instrucciones de control en Java corresponden a las mismas instrucciones de control definidas en el lenguaje algorítmico: selección, repetición o iteración y de salto. Las instrucciones de selección permiten que el programa en su ejecución seleccione distintos caminos en función del resultado de una expresión lógica o del estado de una variable. Las de repetición o iteración permiten que el programa repita una serie de instrucciones hasta que se cumpla una condición dada. Las instrucciones de salto permiten que el flujo del programa salte incondicionalmente a otro lugar del mismo. Se presenta ademas en este capítulo las instrucciones de control en Java, acompañadas de sus definiciones sintácticas, así como de los ejemplos ilustrativos según sea el caso, a fin de que el estudiante se familiarice con su utilización y pueda enfrentar la codificación de programas para resolver problemas en el computador, utilizando el lenguaje Java. A lo largo del capítulo se presenta un número considerable de ejemplos resueltos, que acompañados de las explicaciones del caso, le permiten al lector resolver en Java de una manera práctica, virtualmente cualquiera de los problemas presentados hasta ahora.

De la representación de objetos a Java
Ya se ha indicado que, las clases representan generalizaciones de objetos con características y comportamiento similares. Las clases se definen o especifican con un nombre, atributos y métodos. Los objetos como instancias de una clase llevan nombre, atributos y métodos. Así, al modelar el dominio de un problema, se procede a identificar los objetos y su agrupación en clases, a su vez las clases se organizan jerárquicamente para identificar su estructura.

Para responder a la pregunta de cómo pasar de la representación de objetos a su representación como un programa en Java o sea como un objeto en Java. real area. Los datos o mensajes que se suministren a este objeto en tiempo de ejecución.*/ . se crea a partir de la ejecución de esa clase. entero: radio. dados el radio de la base y la altura. vamos a resolver la siguiente situación alrededor de un problema a resolver. tenga un problema. Nótese que al ser compilado un programa en lenguaje fuente. Los valores a radio y altura se leen por el teclado. altura. Modelar una solución en términos de uno o varios objetos y su ejecución mediante un lenguaje de programación orientado a objetos. que se crea a partir de la clase que lo representa cuando esta se ejecuta en un computador. un objeto. Para efectos de ilustración se presenta el algoritmo respectivo: inicio /*variables de entrada.class se crea en la memoria del computador una instancia de esta clase. con lo cual. harán que éste arroje los resultados esperados. la cual implica obviamente el desarrollo en el lenguaje de programación. Se presentan a continuación unos ejemplos. El área y el volumen se escriben en la pantalla. un programa es un objeto. se genera un archivo . Suponemos en primer lugar que se han realizado los pasos de la Metodología para solución de problemas en el computador hasta el algoritmo y su prueba respectiva. es la línea conductora del desarrollo de sistemas contemporáneo. no es otra cosa que un objeto también. la solución a ese problema. que persiguen ilustrar de manera muy general. o sea un objeto. Problema No. la conversión del modelo de objetos de aplicaciones sencillas a su forma codificada en lenguaje Java. variables de salida. En Java todo son objetos. volumen.4 El desarrollo de la estructura y el comportamiento de una clase a partir de la cual se crean los diferentes objetos a utilizar en la solución de un problema es el trabajo de la programación orientada a objetos (POO). de los diferentes algoritmos que serán incluidos en cada uno de los métodos de las clases y que serán utilizados por los objetos que se creen a partir de estas clases.Programación Java básica: De la representación de objetos a Java 7 . En cualquier caso. En el mundo de los objetos. El objeto de la clase de un programa compilado.class con el nombre de la respectiva clase. También puede suceder que. 1: Desarrollar un programa en Java que permita calcular el área y el volumen de un cilindro. cada vez que se ejecute el archivo . “un problema” es un objeto. lo cual hace que.

En otros términos. ya que los métodos son los que definen el comportamiento de estas. pasa a ser el método de la clase.Programación Java básica: De la representación de objetos a Java 7 . la estructura según la clase definida en seguida: AreaVolCilindro entero radio. De esta manera. area). escriba(“El area del cilindro es “. escriba(“El volumen del cilindro es “. el trabajo bajo objetos es algo diferente y la codificación del programa pasa por el diseño de la solución en su representación de objetos. cálculos y generación de resultados. real area. /* post: se ha calcula y escrito los valores de area y volúmen*/ fin.5 escriba(“Digite el valor del radio del la base”). Se utilizará un sólo método. la altura. por ejemplo. dentro del cual se llevarán a cabo los procesos de lectura. convirtiendo las instrucciones casi que literalmente a las instrucciones correspondientes del lenguaje de programación. /* pre: se han leido el radio y la altura como enteros mayores que cero*/ volumen = 3. volumen. los métodos contienen lo que lo que los objetos realizan y es el lugar .1416*radio*altura. La clase solución podrá tener como nombre AreaVolCilindro. volumen). el área y el volumen. escriba(“Digite el valor de la altura”). Figura 1 Clase AreaVolCilindro El algoritmo desarrollado para el problema. significa que se debe diseñar un objeto que resuelva el problema propuesto. metodo1(). se puede codificar el algoritmo directamente. atributos (que pueden ser también los objetos que tiene). area = 2*3.1416*radio*radio + 2*3. La clase puede tener. Como objeto debe tener nombre. como atributos el radio. Aunque en un lenguaje procedimental. lea(altura). lea(radio). así como los métodos correspondientes a su comportamiento.altura.1416*radio*radio*altura. la solución del problema anterior bajo el enfoque de objetos.

static float area.parseInt(dato2). Linea 2-15. Linea 7: aquí se utiliza el método showInputDialog de la clase . } 15. "El area es = "+ area +"\nEl volumen es = "+volumen ). altura.swing.parseInt(dato1). la denominación de funciones. 10. dato1 = JOptionPane. una vez se la haya compilado. 11. radio = Integer. 13. es el único método de la clase.1416*radio*radio)*altura. volumen. altura = Integer.import javax.1416*radio)*altura + 2*3. 14. 4. se podrá resolver el problema indicado. corresponde a métodos dentro de un objeto. 5. Puede afirmarse que.6 donde se codificarán. JOptionPane. 12. Lineas 3-4: es la declaración de las variables o atributos de la clase AreaVolCilindro.JOptionPane. volumen = (float)(3. 7. 8.swing. Lineas 5-14: es el cuerpo del método principal de la clase. 9. dato2. String dato1. dada en algoritmos.public class AreaVolCilindro{ 3. } Linea 1: indica que se está importando la clase JoptionPane del paquete javax. cuyo nombre es main().showInputDialog("Digite valor altura:").Programación Java básica: De la representación de objetos a Java 7 . Esta clase es del paquete Swing que se utilizará en adelante en el texto para la lectura y generación de resultados. area = (float)((2*3. Linea 6: es la declaración de dos variables de tipo String(cadena) para almacenar los caracteres leidos mediante el componente JoptionPane.static int radio. public static void main(String args[]){ 6.showInputDialog("Digite valor radio de la base:"). dato2 = JOptionPane. de acuerdo al diseño establecido antes. los algoritmos que se han desarrollado para la solución a un problema en particular. es el cuerpo de la clase AreaVolCilindro. con algunas modificaciones. Ejecutando la clase AreaVolCilindro.showMessageDialog(null. 2. Veamos la codificación de la clase AreaVolCilindro en lenguaje Java: 1.1416*radio*radio).

para generar la siguiente salida en la pantalla. de la clase JoptionPane.parseInt(dato1). Figura 2 Lectura de la base Linea 8: se convierte la cadena leída a un valor entero. asignado al radio mediante Integer. .7 JoptionPane. Obsérvese cómo se ha construido la salida de los resultados. pero esta vez para la altura: Figura 3 Lectura de la altura Lineas 11-12: calcula los valores para area y volumen. combinando tanto títulos como valores de las variables a escribir. Se debe presionar OK una vez se digite el valor indicado. en la variable radio queda almacenado el valor numerico de tipo entero 12. Linea 13: genera los resultados en la pantalla utilizando el método showMessageDialog. Lineas 9-10: hacen lo mismo que las anteriores.Programación Java básica: De la representación de objetos a Java 7 . en la cual se ilustra que se están digitando los caracteres 12 (uno y dos) para la base. A partir de esta linea.

Cada vez que se ejecute esa clase en un computador. El nombre de la clase es SumaFactorial. es decir que no sea una clase principal.Programación Java básica: De la representación de objetos a Java 7 . n. tiene dos atributos de tipo entero: suma para el resultado y n para el número de términos de la serie.. tiene un método en este caso el método principal main().. Ahora la clase con la cual se resolverá el problema tendrá la siguiente estructura: SumaFactorial int suma. Problema No. se generará un objeto solución para un problema en particular.8 Figura 4 Resultados del área y volumen Vemos cómo se ha desarrollado en Java una clase solución al problema planteado. Se supone nuevamente que se ha desarrollado el algoritmo y su respectiva prueba de escritorio. El mecanismo de utilización de los métodos de la clase SumaFactorial. S = 1 . sino que para su uso se requiera de otra clase. void main().2! + 3! +4! . que denota una aplicación o clase principal. El valor de N se deberá leer por el teclado y verificar que cumple la condición indicada. correspondiente a los pasos de la Metodología para la Solución de problemas en el Computador. El resultado se debe mostrar por la pantalla. podrá ser mediante la creación de un objeto del tipo SumaFactorial. esta si principal. 2: Desarrollar un programa en Java que permita calcular el valor de la siguiente serie para sus N(N>0 y N< 20) primeros términos.5! + 6! + 7! . Puede desde luego crearse una clase SumaFactorial que no tenga un método principal. o utilizando sus métodos haciendo .

La solución presentada aquí es como una clase principal. "Resultados". numMas = 1. } } Para este caso.Programación Java básica: De la representación de objetos a Java 7 . for (i = 1.parseInt(entrada). suma = 0.} } JOptionPane. como en el problema .} while(n<1 || n >19) facto = 1. contSignos. // importa class JOptionPane public class SumaFactorial{ static int suma.swing. contSignos = 0. facto. do{ entrada= JOptionPane. "La serie da: " + suma.JOptionPane.facto. public static void main(String dato[]){ int numMas. n. Una forma sencilla de codificar la clase SumaFactorial en el cuerpo de un programa tipo aplicación es ilustrada a continuación: /* i variable indice del ciclo suma donde se lleva la sumatoria n el valor del numero de terminos numMas numero de signos + antes del signo contSignos contador de signos + en cualquier momento facto donde se lleva acumulado el factorial */ import javax.PLAIN_MESSAGE ).showInputDialog("Digite un valor para n:”).9 referencia al nombre de la clase.showMessageDialog(null. numMas = numMas +1. contSignos =0. contSignos = contSignos +1.} else{ suma = suma + facto. JOptionPane. el método main() contiene el desarrollo en Java del algoritmo respectivo para el cálculo de la sumatoria solicitada y la entrada y salida de valores por medio del componente JoptionPane. i<= n. n= Integer. if(numMas == contSignos){ suma = suma . String entrada. i++){ facto=facto*i.

Los resultados al ejecutar la clase se ilustran a continuación: Figura 5 Entrada de n Figura 6 Resultados de SumaFactorial Problema No. . pero esta vez utilizando una clase con la siguiente estructura: SumaFactorial int n. void main(). Cuando se ejecuta el archivo .Programación Java básica: De la representación de objetos a Java 7 .3: Desarrollar un programa en Java que permita calcular el valor de la serie indicada en el problema anterior.10 anterior. int sumatoria(). se crea un objeto el cual operará según los datos que se suministren. según el programa Java anterior.class correspondiente a la clase SumaFactorial.

JOptionPane.showMessageDialog(null. 19. int numMas = 1. 32. do{ 27. 13. int i.parseInt(entrada). 25. i<= n. A continuación se presenta la codificación de la clase SumaFactorial: 1. para la lectura. "La serie da: " + resultado.PLAIN_MESSAGE ). "Resultados". int contSignos = 0. Se presenta a continuación algunas explicaciones al código de la clase anterior: Lineas 2-33: es el cuerpo de la clase SumaFactorial. } La ejecución de la clase anterior arrojará los mismos resultados que los obtenidos anteriormente. .11 Aquí se puede observar que la clase principal SumaFactorial tiene un atributo n. int resultado. 7. 18. } 33. el cual devuelve o retorna un valor entero y el principal main(). public class SumaFactorial{ 3. JOptionPane. return suma.// importa JOptionPane 2. llamado al método sumatoria() y escritura de resultados. suma = suma + facto. } 20. } 21.import javax. 26. entrada= JOptionPane. 4. if(numMas == contSignos){ 12. facto. int suma = 0.swing. facto=facto*i. contSignos = 0. 17.} else { 16. 31.Programación Java básica: De la representación de objetos a Java 7 . static int n. contSignos = contSignos +1. i++){ 11. 29. for (i = 1. 8. 14.showInputDialog( "Digite un valor para n:" ). 28. 15. String entrada.} while(n<1 || n>19). static int sumatoria() { 5. o sea el valor correspondiente al número de términos a calcular y dos métodos: uno para el cálculo de la sumatoria llamado sumatoria(). 10. 9.public static void main(String arg[]){ 24. facto = 1. 22. numMas = numMas +1. n= Integer. suma = suma . resultado= sumatoria(). } 23. 6. 30.facto.JOptionPane.

Programación Java básica: De la representación de objetos a Java 7 - 12 Linea 3: declaración de la variable entera n como atributo de la clase. Lineas 4-22: cuerpo del método sumatoria, donde se calcula la sumatoria de los n primeros términos de la serie. Obsérvese que este método no tiene parámetros ya que el valor de n al ser declarado como atributo de clase (también puede entenderse como una variable global), puede ser accedido desde el interior del método. Así mismo este método retorna un valor entero, por eso el tipo del método es entero. Línea 21:instrucción mediante la cual el método sumaserie() devuelve el valor calculado, el cual es el resultado de la sumatoria y es un valor entero. Líneas 23-32: cuerpo del método principal main(). Linea 30: llamado al método sumaserie() y almacenamiento del valor devuelto en la variable resultado. Veamos a continuación una modificación de la versión anterior en donde se ha desarrollado la clase SumaFactorial1, con su atributo n, de tal manera que pueda ser usada por cualquier otra clase que se desarrolle, por ejemplo por la clase PruebaSumaFac, en donde se suministrará un valor para el atributo n y se llamará a la clase SumaFac mediante la creación de un objeto sumatoria. La clase PruebaSumaFac usa a la clase SumaFac. Obsérvese que en la clase SumaFac, se tiene un método sumatoria, que es el encargado de hacer las operaciones del algoritmo del cálculo de la serie dada Problema No. 4: Desarrollar un programa en Java que permita calcular el valor de la serie indicada en el problema anterior, pero esta vez utilizando la siguiente estructura de clases:

PruebaSumaFac

SumaFactorial int n;

void main();

int sumatoria();

En este diagrama se está indicando que la clase SumaFactorial ahora no será una clase principal, pues no contiene el método main(), sin embargo contiene

Programación Java básica: De la representación de objetos a Java 7 - 13 un método para la sumatoria y un atributo como en el problema anterior. Por tanto la utilización de la clase SumaFactorial se deberá hacer mediante su llamado dentro del cuerpo de otra clase, en este caso PruebaSumaFac que es una clase principal pues contiene el método main(). Dicho en terminología de objetos, “la clase PruebaSumaFac usa la clase SumaFactorial”, o sea que entre estas dos clase hay una relación de uso, en el sentido explicado antes. En esta situación dentro del cuerpo de la clase PruebaSumaFac se deberá crear una instancia u objeto del tipo SumaFactorial, con el cual se podrá invocar el método sumatoria(), para el cálculo de la serie según el número de términos indicado. A continuación el código fuente en Java tanto de la clase SumaFactoial como de la clase PruebaSumaFac que usa a la primera. Se debe compilar cada una por separado y dejándo los archivos PruebaSumafac.class y SumaFactorial.class en el mismo directorio.
1.public class SumaFactorial{ 2. static int n; 3. int sumatoria() { 4. int i, facto; 5. int suma = 0; 6. int numMas = 1; 7. int contSignos = 0; 8. facto = 1; 9. for (i = 1; i<= n; i++){ 10. facto=facto*i; 11. if(numMas == contSignos){ 12. suma = suma - facto; 13. numMas = numMas +1; 14. contSignos = 0;} 15. else { 16. suma = suma + facto; 17. contSignos = contSignos +1; 18. } 19. } 20. return suma; 21. } 22.}

Lineas 1-22: cuerpo de la clase SumaFactorial. El cálculo del valor de la sumatoria se hace ahora mediante una clase sencilla, o no principal, que tiene un atributo de clase n y un método sumatoria(). Obsérvese que ya no existe dentro de esta clase el método main().

Programación Java básica: De la representación de objetos a Java 7 - 14
1.import javax.swing.JOptionPane; // importa class JOptionPane 2.class PruebaSumaFac{ 3. public static void main(String arg[]){ 4. String entrada; 5. int numero, resultado; 6. SumaFactorial sumaSerie = new SumaFactorial(); 7. do{ 8. entrada= JOptionPane.showInputDialog( "Digite un valor para n:" ); 9. numero= Integer.parseInt(entrada);} 10. while(numero<1 || numero>19); 11. sumaSerie.n = numero; 12. resultado= sumaSerie.sumatoria(); 13. JOptionPane.showMessageDialog(null, "La serie da: " + resultado, "Resultados", JOptionPane.PLAIN_MESSAGE ); 14. 15. } }

Lineas 1-15: cuerpo de la clase principal PruebaSumaFac que usa el método sumatoria() de la clase SumaFactorial, mediante la creación de una instancia u objeto de esta, llamado sumaSerie. Linea 6: se crea un objeto llamado sumaSerie del tipo SumaFactorial, invocando un método constructor SumaFactorial() mediante la cláusula new. En otros términos, crea una nueva instancia de SumaFactorial con el nombre sumaSerie. Linea 11: le asigna a la variable o atributo n, del objeto sumaSerie, el valor leído y almacenado en numero. Linea 12: invoca el método sumatoria() del objeto sumaSerie, para calcular el valor de la serie. El resultado es almacenado en la variable resultado. Los resultados obtenidos al ejecutar la clase PruebaSumaFac son los mismos que los obtenidos en las versiones anteriores. Debe anotarse que, la clase SumaFactorial en su última versión, podrá ser utilizada por cualquier otra clase para el cálculo de la serie indicada. Con estos ejemplos se ilustra de manera general el proceso de pasar de la representación de objetos al lenguaje de programación Java.

en este caso que lo especializan como animal carnívoro. atributos y métodos que lo caracterizan.. es decir la clase Carnívoro. a partir de la cual se ejecuta éste. Cada clase está formada por atributos.. Solo bastaría agregarle a Carnívoro las características propias. su codificación quedaría de la siguiente manera: public class Carnívoro extends AnimalMamifero{ . Las relaciones entre clases Cada una de las relaciones entre objetos señaladas en la Unidad anterior. una subclase de ésta es Carnivoros. Por ejemplo. Codificación de la relación es-un La relación es-un dada entre clases. es también una característica de Carnívoro. la invocación de métodos y objetos y el manejo de funciones.. si se tiene una clase AnimalMamifero. En cada programa Java hay una clase principal. Un programa se puede conformar de más de una clase. uso y composición. así como de métodos. lógicas y relacionales.15 Componentes de un programa Java En los ejemplos presentados se ha visto que la estructura de un programa Java se forma a partir de una o más clases. La forma más común de representar esta relación es mediante subclases de una clase. aquella que implementa las relaciones de herencia. Cada una de estas clases tienen sus atributos y los métodos propios. hereda todas las carcterísticas públicas de AnimalMamifero. . herencia. los cuales pueden ser variables de algún tipo u objetos.. carácter. } Cualquier característica de tipo public. es decir. se pueden representar dentro del código de un programa Java. de instrucciones de control de flujo como son los ciclos y las repeticiones. los cuales están formados por instrucciones tanto aritméticas. lógico. Dentro del cuerpo de los métodos se encuentran además las variables.Programación Java básica: De la representación de objetos a Java 7 . es la relación de especialización de una en otra. en cuyo caso las demás clases diferentes a la clase principal se deben compilar por separado y almacenarse en el mismo directorio donde se ha compilado la clase principal. tanto atributos como métodos de la clase AnimalMamifero. Dado que un Carnivoro es un AnimalMamifero. booleano. que pueden ser de tipo entero.

Los identificadores no son .16 Codificación de la relación tiene-un Esta relación se da por en la composición de un objeto a partir de otros. Obviamente puede contener más objetos. El perrito Lucas de su vecina.. valor suministrado como argumento de este método. Codificación de la relación utiliza-una En el desarrollo de una clase puede verse la necesidad de utilizar instancias provistas por otras clases..Programación Java básica: De la representación de objetos a Java 7 . } Indica que la clase LamparaDeMesa tiene un objeto bombilloLampara del tipo Bombillo y un objeto interruptorLampara de tipo Suiche. miRelojDespertador. requerirá de una instancia RelojDespertador. se compone del objeto bombillo. métodos. del objeto portaLampara y otros. la cual tiene un bombillo. En este caso la siguiente codificación ilustra la relación Persona usa-un RelojDespertador: public class Persona{ RelojDespertador miRelojDespertador = new RelojDespertador(). para fijar la hora de la alarma en laHora.. private Suiche interruptorLampara. que está contenido dentro de la clase RelojDespertador.. por ejemplo la clase Persona. paquetes e interfaces (que se definirán más adelante). luego se usa el método fijarHoraAlarma (laHora). etc Sea por ejemplo la clase LamparaDeMesa. clases.fijarHoraAlarma(laHora). tiene un collar de dientes de Tiburón.. a fin de fijar la hora para su alarma. .. La LamparaDeMesaDeNoche. Identificadores en Java Por identificadores se entiende los nombres dados a variables.. por ejemplo. } En el código anterior se crea un objeto miRelojDespertador a partir de la clase relojDespertador. la mayoría de objetos en su habitación están formados por otros objetos. . su codificación quedaría de la siguiente manera: public class LamparaDeMesa { private Bombillo bombilloLampara. un suiche y un porta lámpara.

Un nombre de variable no puede contener espacios. se pueden formar de letras. Los identificadores se deben iniciar con una letra. si se desea usar como identificador 8Ciclos. se recomienda que cada palabra de las que conforman el nombre de un identificador se inicie con una letra mayúscula y las demás letras con minúsculas. Una buena práctica es asignar nombres significativos y mnemotécnicos para los identificadores.17 cosas u objetos. Ejemplo01 y otros. Los identificadores. Cada variable u objeto toma un nombre o identificador con el cual se identifican en el programa. tampoco se puede iniciar con un número. a través de los diferentes ejercicios y ejemplos se ha manejado identificadores como System. el nombre válido sería _8Ciclos. aplicación o applet. variable1. Los siguientes son nombre válidos de identificadores: variable miVariable MIVARIABLE x i _mivariable $mivariable _9pins andronauta OClaroEsta Los siguientes son nombres inválidos de identificadores: Mi Variable // Contiene espacio en blanco 9pines // Inicia con un dígito a+c // El signo + no es un carácter alfanumérico chequeo1-2-3 // El signo menos no es un carácter alfanumérico O'Reilly // El apóstrofe no es un carácter alfanumérico OReilly_&_Associates // El símbolo ampersand no es alfanumérico Si se desea que un identificador se inicie con un número. números. por ejemplo. anteponga el símbolo _ (subrayado) al nombre o identificador. justamente son la forma de llamar esas cosas u objetos. con el símbolo _ (subrayado) ó con el signo $. la primera palabra se iniciará con minúscula. el . A lo largo del texto. grabadora.println.Programación Java básica: De la representación de objetos a Java 7 . en el caso de las clases. métodos y objetos. el símbolo _ (subrayado) y el símbolo $. args. lo más cercanos a los significados que ellas tienen o representan en el dominio del problema.out. Como norma de codificación en Java. Para el caso de variables. String.

tabulaciones. Se usa también para separar operandos. Cuando se presiona la tecla de enter o de retorno. se produce la inserción de una línea o un retorno de carro. lineas y formas de alimentación. palabras. el retorno de carro o enter (carriage return) y la alimentación de una línea (line feed). Dentro del cuerpo de una literal tipo carácter de los caracteres mencionados que Java toma como un solo espacio en blanco. notación que se ha propuesto y utilizado en los capítulos anteriores. la alimentación de formas (form feed). Existen en Java otros cuatro espacios en blanco: la tabulación horizontal (horizontal tab).18 identificador se inicia con mayúscula . lo cual se refleja en el código fuente como una nueva línea. Los siguientes ejemplos ilustran este sistema de codificación de identificadores: pesoEspecifico // para una variable volumenTotalLago// para el nombre de un método FiguraGeometrica // para denotar la clase FiguraGeometrica cuadradoRojo // puede denotar un objeto El espacio en blanco El espacio en blanco corresponde al carácter que se produce cuando se presiona la barra de espaciamiento en el teclado del computador y que se utiliza para separar palabras. El número de espacios que utilice es solamente para una mejor presentación visual a quien lee el programa en lenguaje fuente. Aparte del uso de espacios en blanco en las literales de caracteres (String).Programación Java básica: De la representación de objetos a Java 7 . pueden ser insertadas utilizando las secuencias de escape: Secuencia de escape \ddd \uxxxx \' \” \\ \r \n \f Descripción Carácter octal (ddd) Carácter UNICODE hexadecimal (xxxx) Comilla simple Comilla doble Barra invertida Retorno de carro Nueva línea (salto a nueva línea) Alimentación de página (salto a nueva página) . Retornos de carro. símbolos. sólo se permite escribir directamente el carácter espacio en blanco. Java sin importar cuantos espacios se utilicen los toma como uno.

como a la forma como es almacenado en la memoria del computador. sobre Lenguaje Algorítmico y obviamente similares a la mayoría de los lenguajes de programación. enteros(int).”.”. Veamos algunos aspectos generales sobre los tipos de datos. son muy similares a los tratados en el Capítulo 2. también denominados primitivos. de punto flotante (float). de formato corto (short).Programación Java básica: De la representación de objetos a Java 7 . En lugar de esa construcción se debe utilizar la secuencia de escape \n y el operador de concatenación de carácteres +. tus ojos acabado alma. Estos tipos de datos son: los lógicos (booleanos). Los tipos de datos disponibles en Java. comparando C++ y Java: .19 Secuencia de escape \t \b Descripción Tabulación Retroceso No se puede cortar una cadena (String) de carácteres a través de una línea. como en el caso los lenguajes C y C++. cabe anotar que en su implementación se encuentran algunas diferencias según el lenguaje de programación. Tipos de datos Los tipos de datos hacen referencia tanto al tipo de contenido. de formato largo (long). Obsérvese que. una instrucción sí se puede cortar a través de múltiples líneas. Accesar al contenido de un tipo de datos en particular se hace mediante nombres o identificadores. como por ejemplo en el siguiente caso: String verso alza la cara que no digan que se te ha la paz en el = “No llores por amor. sin embargo una literal de carácteres (String) no es permitido. de la siguiente manera: String verso = “No llores por amor\n” + “alza la cara\n” + “que no digan tus ojos\n” + “que se te ha acabado\n” + “la paz en el alma. de formato extendido (double) y para manejo de caracteres (char).

con las cuales se pueden crear instancias de objetos de la aplicación del mundo real. tienen un tipo de dato. cada expresión. Así mismo cada tipo está definido estrictamente. entre otros. expresiones y parámetros.20 • En C y C++ la manipulación de tipos de datos es dependiente del compilador y la máquina.Programación Java básica: Tipos de datos 7 . . Como se vio antes. Sea el caso de una clase denominada CamionDeCarga que puede contener. todas las conversiones. bien explícitas o mediante paso de parámetros en llamadas de métodos. • • En Java cada variable. El compilador Java comprueba todas las asignaciones. por ejemplo en el tamaño de los enteros. así como la conversión entre superclases y subclases del mismo objeto. tanto aplicaciones como applets se diseñan sobre la base de la estructura o jerarquía de clases. Java previene acerca de la conversión arbitraria entre variables con tipos de datos no similares. Todas las variables numéricas en Java tienen signo. En Java se especifica cada tipo de dato de manera independiente. entendidas como plantillas en Java. Dependiendo de la tarea a realizar. cuyos datos miembros pueden ser a su vez clases. para asegurar la compatibilidad de los tipos de datos. teléfono. los siguientes tipos de datos miembros o atributos: Atributos de la Clase CamionDeCarga marca fabricante color numeroMotor capacidadMotor placaNumero numeroEjes dueño combustible Valores de atributos para el objeto miCamion Ford 7000 Ford Motor Co. o tener la forma de instancias de clases que vienen incorporadas en el lenguaje Java. Rojo ladrillo SF987005643 7.000 cc NOC 890 2 Federico García Diesel En esa lista se observa que fabricante. se requerirá definir clases. puede ser a su vez una clase y contendría entonces la información sobre su dirección. nombre. Únicamente se permite la conversión entre variables de tipo numérico.

hacer mantenimiento y otros. los siguientes atributos.Programación Java básica: Tipos de datos 7 . entendida como una cadena de caracteres.21 página web. De cuerda Se puede identificar que entre sus atributos hay uno con información numérica con decimales como es el caso del precio y de contenido alfabético como es el color y alfanumérico como la serie.000. consideradas del tipo de dato simple. deberán tener la forma de almacenamiento numérico sin decimal. métodos para vender. con entre otros. financiar. La identificación mediante la placaNumero hace referencia a una cantidad de tipo alfa-numérico. como se explica a continuación.m. Los atributos capacidadMotor y numeroEjes al hacer referencia a un valor numérico. el cual es una instancia de la clase RelojDespertador. Veamos ahora el caso de un objeto miRelojDespertador.00 Alarma Usted 8:00 p. Tipos de Datos primitivos Java trae definidos los siguientes tipos de datos primitivos : . Todos ellos son tipos de datos primitivos.m. Los demás atributos hacen referencia a tipos simples que pueden contener información numérica o alfanumérica. y sus valores: Atributos de la Clase RelojDespertador marca color serie tipoMaterial precio tipoFunciones nombreDueño horaActual horaAlarmaActual operacion Valores de atributos para el objeto miRelojDespertador Pony Azul Cielo Ax-12345 Metal-Plástico $5. En el caso del objeto miCamion se encuentran tipos de datos que hacen referencia a cantidades numéricas y de cadenas de caracteres. 5:00 a. o tipo de datos primitivos.

147.Programación Java básica: Tipos de datos 7 . falso o verdadero: boolean. Representa el comportamiento para las variables y expresiones del respectivo tipo.648 a 2. el máximo valor es 11 binario que corresponde al decimal 3. Es decir que la máxima cantidad entera almacenada en un bit es el entero 1.223. dependiendo de las necesidades de rangos de almacenamiento por parte las variables a utilizar.223. Gran parte del trabajo computacional se fundamenta en la manipulación de cantidades enteras con signo. Hay cuatro tipos de datos enteros.036. El tamaño. long.483.768 a 32. haciendo referencia al rango de valores que se pueden almacenar en las variables de ese tipo. si hay 7 bits el máximo valor es 1111111 binario que corresponde al decimal 127. int.808 a 9. La siguiente lista indica los tamaños en bits y rangos para los tipos de datos enteros: Tipo de dato long int short byte Tamaño en bits 64 32 16 8 Rango de valores permitido -9. Para manejo de cantidades de punto flotante. Para cantidades con valores lógicos.775.372.372.22 • Para manejo de cantidades enteras. • • • Enteros Los enteros representan las cantidades que no tienen parte decimal o fraccionara.775. Como en Java una . double. short.854.807 -2.483. Un dígito binario o bit. Si hay dos bits. o sea aquellas que no tienen decimales: byte.767 -128 a 127 La memoria del computador se mide en bytes u octetos de bits. o con decimales: float.954.147. números y caracteres especiales: char.647 -32. Manejo de los símbolos de un conjunto de caracteres como por ejemplo letras. puede almacenar un uno o un cero.036. es decir que pueden tomar valores positivos o negativos. es una cantidad expresada en número de bits (dígitos binarios) asignados en la memoria del computador para almacenar un valor.

de acuerdo a la tabla anterior el tipo recomendado es el byte ya que su rango comprende los valores del contador a utilizar. o sea de tipo long la siguiente declaración lo establece para las variables indicadas: long variableLarga. Si se desea usar variables enteras de tamaño de 64 bits. Valores reales Los valores reales o de punto flotante se utilizan para cálculos que requieran mayor precisión. para el caso de los enteros uno de los bits se deja para el signo. numeroEstudiantes. cos(). Pero si se requiere un arreglo con mayor numero de indices. Los índices de arreglos. Si se desea un contador que tome valores entre 1 y 100.Programación Java básica: Tipos de datos 7 . cantidadPedida. la raíz cuadrada y las funciones trigonométricas como el seno y el coseno. aparte del exponente. Estos tipos de datos almacenan los bits mas significativos. ya que su rango difícilmente superaría los 128 elementos. Para el caso de tres variables cuyos valores están dentro del rango del tipo int su declaración se puede hacer con short numeroVehiculos. De esta manera. Por ejemplo. la cual se define como la cantidad de dígitos significativos que maneja el computador exactamente para un tipo de datos dado. unaGrandota. Con la siguiente instrucción se declara una variable contador con el tipo byte. como por ejemplo el arreglo arg[] usado como argumento en el método main(String arg[]) puede ser de tipo int . otraLarga. el de la izquierda por ejemplo) será uno para el signo y en los siete restantes 1111111 binario que corresponde al decimal 127. 32 o 64 bits. sqrt() devuelven valores de doble precisión. o sea la mantisa. byte contador. Igual calculo se puede hacer para el almacenamiento en tamaño de 16. Declaración de variables enteras Para decidir si se debe crear una variable entera es necesario conocer el tamaño máximo y mínimo que se espera deba contener el dato representado por dicha variable y asignarle un nombre con el cual se haga referencia.23 cantidad numérica tiene signo. la capacidad de almacenamiento de valores enteros en 8 bits (de los cuales toma uno para el signo. Todas las funciones matemáticas trascendentes como sin(). . se utilizaría el tipo short.

que representan números de precisión simple y de precisión doble. su rango de valores es establecido de acuerdo a: mínimo valor negativo -1. Declaración de variables reales Ejemplo 1: En el siguiente programa se calcula el área de un círculo mediante la clase AreaCirculo.94065645841246544 10-324 mínimo valor positivo máximo valor positivo 4. • float almacena sus valores en 32 bits y se denomina precisión sencilla. En ambos casos. su rango de valores es establecido de acuerdo a : mínimo valor negativo -3.40239846 10-45 3. cos() y sqrt() por ejemplo.40282347 10+38 máximo valor negativo -1. float y double. otro para el signo del exponente y otra parte para el exponente. • double almacena sus valores en 64 bits y se denomina de precisión doble.7976931348623147 10+308 máximo valor negativo -4.7976931348623147 10+308 Los valores en precisión double son muy útiles cuando se hacen cálculos con números de gran valor o tras de muchos cálculos iterativos o repetitivos.24 Como en el caso de los valores enteros.40239846 10-45 mínimo valor positivo máximo valor positivo 1. Dando así los rangos de valores indicados. la precisión se limita al número de dígitos significativos de cada tipo. una parte del tamaño en bits se toma para el signo de la mantisa. devuelven valores del tipo double. requieren la mitad del espacio que la precisión doble. otro para la mantisa. en los de coma flotante se presentan en dos tamaños: float y double. siendo más rápida. como sin(). sin embargo es imprecisa cuando los valores son muy grandes o muy pequeños. .94065645841246544 10-324 1. Las funciones matemáticas trascendentes.40282347 10+38 Los valores en precisión float o simple. Nótese que aunque el rango cubierto es muy grande.Programación Java básica: Tipos de datos 7 . por ejemplo para el cálculo de convergencia de funciones. Las variables float son útiles cuando no se requiere mucha precisión.

stonehand.8.PLAIN_MESSAGE ).JOptionPane. char ca1. arábigo y muchos mas.html Declaración de variables char Los siguientes son algunos ejemplos de declaración de variables tipo char. // importa class JOptionPane class AreaCirculo { public static void main(String args[]) { double pi. griego.536 (1111111111111111 en binario).unicode.showMessageDialog(null. area = pi*radio*radio. por tanto el rango de caracteres es de 0 a 65. radio.25 // calculo del area de un circulo import javax. pi = 3. "Resultados". } } Cuyo resultado se presenta enseguida: Figura 7 Salida de la clase AreaCirculo Valores char El tipo de datos para almacenar caracteres es el char.com/unicode. Este sistema define un conjunto de caracteres completamente internacional.swing.1416. Tiene sentido la utilización del sistema unicode ya que Java esta diseñado apara permitir que los applets se puedan utilizar en todo el mundo. JOptionPane. Para lograr esto el tipo de dato char utiliza 16 bits. . JOptionPane. Java utiliza el código Unicode para representar caracteres. area. radio = 10.Programación Java básica: Tipos de datos 7 .org y en http://www. que puede representar todos los caracteres encontrados en todos los idiomas y lenguas. Información sobre unicode está disponible en http://www. "El area del circulo con radio "+radio+" es "+area. Es la unificación de docenas de conjuntos de caracteres como latino.

// importa class JOptionPane class AgregaCaracteres{ public static void main(String args[]) { char parte1. [] {????????} char ca3 = ´\n´. } } Se obtiene el siguiente resultado: Figura 8 Resultados clase AgregaCaracteres Valores Booleanos Por definición. // código que representa x parte2 = 'Y'. solo pueden tomar uno de dos valores. for . "parte1 y parte2: "+parte1+" "+parte2. Una variable de este tipo. true (verdadero) o false (falso). Ejemplo 2: En el siguiente programa se usan variables tipo char: // uso de variables char import javax. Declaración de variables booleanas Ejemplo 3: En el siguiente programa se utilizan variables booleanas. parte1 = 88. while.26 char ca2 = “carácter 2”.PLAIN_MESSAGE). Este es el tipo que devuelven los operadores de comparación relacionales. JOptionPane. // Utilización de variables booleanas class ChequeaBooleana{ . parte2. al ser creada toma como valor predeterminado false.Programación Java básica: Tipos de datos 7 .showMessageDialog(null.JOptionPane. o el requerido en las expresiones condicionales que controlan el flujo como if . los valores booleanos tienen un bit de almacenamiento. do.JOptionPane. como en la expresión area1 < area2 ."Resultados".swing.

out. Una literal es una constante. es una literal tipo String y significa que tiene almacenado el mensaje o cadena Soy una Applet. 67. Literales de tipo entero Los enteros son el tipo más utilizado en el trabajo en el computador. representa una sola cosa: una literal tipo String.println(“ varb tiene el valor “ + varb). } } } Al ejecutarse el programa generara el siguiente resultado por la línea de comandos: varb tiene el valor false varb tiene el valor true Se ejecuta esta instrucción Literales en Java Literales son código fuente de Java que significan justamente lo que ellas dicen en su asignación literalmente.println(“ Se ejecuta esta instrucción”). Así mismo 9. Para el compilador aunque tiene mas de un carácter. varb = true. son valores literales enteros los cuales son valores decimales por cuanto están en base 10. cualquier valor numérico entero es un literal entero. System. Por ejemplo los valores. Cada tipo de datos permite la manipulación del mismo tipo de literales según el tipo. La base hexadecimal es una base común para los números utilizados por los . varb. varb = false.println(“ varb tiene el valor “ + varb). con las cuales también se pueden definir literales numéricas enteras. El rango de los dígitos octales van del 0 al 7. 98.out. “Soy una Applet”. System. // expresion booleana para controlar una selección if (vara){ System.86 aunque tiene mas de un dígito o carácter. por lo cual el valor 06 representa una literal entera en base octal.out. 2. 45.Programación Java básica: Tipos de datos 7 . es considerado como una literal numérica. 1. aunque hay otras bases como la octal en base 8 y la hexadecimal en base 16.27 public static void main(String args[]){ boolean vara. vara = true. por ejemplo. Los valores octales en Java van precedidos por un 0 (cero).

Programación Java básica: Tipos de datos 7 - 28 programadores que coincide con el tamaño de palabra en módulo 8, como el almacenamiento en 8, 16, 32 o 64 bits visto antes. Una literal hexadecimal se representa con el prefijo 0X, seguido de los dígitos hexadecimales cuyo rango es de 0 al 15, por lo que hay que utilizar las letras de la A a la F para representar a los números decimales 10 al 15. Los literales enteros crean por defecto un valor tipo int, que en Java tiene un tamaño de 32 bits. Cuando se asigna un valor literal a una variable entera byte o short, no se genera error alguno si el literal esta dentro del rango del tipo destino. Para las literales o constantes enteras a especificar como long es necesario decirle de forma explícita al compilador que el valor literal es de tipo long, mediante la adición de la letra L (mayúscula o minúscula) al final de la literal. Los siguientes son algunos ejemplos de asignación de constantes enteras a variables:
Constante1 Constante2 Constante3 Constante4 Constante5 = = = = = 9456748378L; // entero decimal en 64 bits 0X6785ABL; // hexadecimal entero en 64 bits 30567; // entero decimal en 32 bits 067543; // entero octal en 32 bits 0786545678L; // entero octal en 64 bits

Literales en coma flotante o de números reales Los valores literales de coma o punto flotante representan cantidades decimales con una componente fraccionaria, en notación estándar o sea la cifra entera seguida de un punto decimal y un conjunto de dígitos expresando la parte fraccionaria, o en notación científica al expresar el número en notación estándar con un sólo dígito entero y adicionalmente con una componente que expresa la potencia que debe elevarse el valor 10 como factor multiplicador del número. El exponente se indica con E, o e, seguido de un número decimal con signo. Por ejemplo 2.345 en notación estándar y 2345 E-3 en notación científica. Las literales de coma flotante son almacenadas por defecto en doble precisión (double) o sea en 64 bits. Si se desea especificar una literal tipo float en 32 bits, se le debe añadir a la constante una F, o f al final. Los siguientes son algunos ejemplos de literales de coma flotante:
Constante1 Constante2 Constante3 Constante4 = = = = 7.98768 E 23; 3.3657 E-21; 4.6543F; 56878.4328;

Programación Java básica: Tipos de datos 7 - 29 Literales Booleanos Un valor booleano se expresa solamente con uno de los dos valores lógicos, true (verdadero) y false (falso). Los valores true y false, no son equivalentes a representación o expresión numérica alguna, es decir no equivalen a 1 y 0 respectivamente como en C o C++ . Las siguientes son asignaciones literales booleanos a dos variables, obviamente del tipo de datos booleano.
Respuesta1 = true; Respuesta2 = false;

Literales Char Estas literales se almacenan en 16 bits sin signo, y corresponden a índices del conjunto de caracteres Unicode. Estos literales se pueden convertir a enteros y ser manipulados con los operadores de los enteros. Un carácter literal tipo char se representa dentro de un par de comillas simples ( ´ ´ ). Los caracteres visibles en ASCII se introducen directamente entre el par de comillas. Aquellos que no se los puede representar directamente se utilizan secuencias de escape, como por ejemplo ´\n´ , para el carácter cuyo función es crear una nueva línea, o ´\r´ para el retorno de carro. Las siguientes son algunas secuencias de escape:
\ddd carácter octal \uxxxx caracter UNICODE hexadecimal (xxxx) \´ comilla simple \´´ comilla doble \\barra invertida \rretorno de carro \nnueva linea \falimentar página \ttabulador \bretroceso

Literales String o de cadena de caracteres Este tipo de literales son similares a las usadas en todos los lenguajes de programación, cualquier cosa colocada “entre un par de comillas dobles”. Una literal String es una coleción de carácteres (letras, dígitos, signos de puntuación, etc.) que se escribe en una sola linea, ya que Java no tiene carácter de escape para indicar continuación de línea.
Cadena1= “Soy toda una cadena “; CadenaOtra = “ Soy otra cadena y que?”;

Programación Java básica: Operadores en Java 7 - 30

Operadores en Java
Un operador es un símbolo que representa una operación que toma uno o mas argumentos u operandos y opera sobre ellos a fin de generar un resultado. Típicamente los operadores en un programa están entre identificadores y literales de tipo numérico. Algunos están antes del operando y se denominan prefijos, otros después y se denominan posfijos, algunos toman un solo operando y se denominan operadores unitarios unarios, los que requieren dos operandos se denominan binarios. Java brinda un conjunto de 44 operadores, los cuales son como instrucciones que le indican al compilador acerca de la realización de operaciones lógicas o matemáticas. Se agrupan en cuatro grupos: aritméticos, relacionales, lógicos y a nivel de bit.

Operadores aritméticos
Los operadores aritméticos se utilizan para realizar operaciones matemáticas, exactamente como están definidas en el Álgebra. La siguiente tabla ilustra la lista de los operadores aritméticos: Operador + * / % ++ Resultado adición Substracción y signo unitario producto división módulo incremento Operador += -= *= /= %= -Resultado asignación aditiva asignación de substracción asignación de producto asignación de división asignación de módulo decremento

Las cuatro operaciones
Las operaciones aritméticas de suma, resta, multiplicación y división se llevan a cabo en la forma convencional. El operador unitario - (menos), se utiliza para negar el signo del operando al cual precede. Ejemplo 4: El siguiente ejemplo ilustra las cuatro operaciones entre literales y variables:
import javax.swing.JOptionPane; class CuatroOperaciones{

import javax. var2. } } Cuando el programa se ejecuta producirá los siguientes resultados: Figura 9 Resultados de la clase CuatroOperaciones Operador módulo Este operador permite calcular el residuo de una división tanto para tipos enteros o de coma flotante. var3. JOptionPane.JOptionPane. var6.showMessageDialog(null. var5=var4*var1.Programación Java básica: Operadores en Java 7 .31 public static void main(String args[]){ int var1. . var4= var3-20. var6=var2/var1.swing. var5."valor de var1= "+var1+ "\nvalor de var2= " + var2+ "\nvalor de var3= " + var3+ "\nvalor de var4= " + var4+ "\nvalor de var5= " + var5+ "\nvalor de var6= " + var6).150 modulo 10. var2= 20. var1= 10. Ejemplo 5: El siguiente ejemplo ilustra la utilización del operador para encontrar el resíduo de 53 modulo 10 y de 52. var3= var1+var2. var4.

El significado de cada uno de los operadores de asignación se da a continuación: .showMessageDialog(null.Programación Java básica: Operadores en Java 7 .32 class CalculoModulo{ public static void main(String args[]){ int z = 53. Operación valida en Java. sin embargo la forma siguiente arroja el mismo resultado mediante el operador de asignación respectivo de la suma: valor += 4. double w = 52.z+" modulo 10 = "+z % 10+ "\n"+ w + " modulo 10 = " + w % 10). Por ejemplo. } } Cuando se ejecute el programa deberá generar los siguientes resultados: Figura 10 Resultados clase CalculoModulo Operadores aritméticos de asignación Cada uno de los cuatro operadores aritméticos tiene una forma asociada la cual permite realizar la operación y la asignación. para incrementar el valor de la variables valor en cuatro unidades.150. JOptionPane. valor = valor + 4.

coloca el valor de la expresión del lado derecho en la variable de la parte izquierda del signo igual. Adiciona el valor de la derecha a la variable de la izquierda y almacena el resultado en esta variable.// incrementa en la unidad a . Divide la variable de la izquierda por el valor de la derecha almacena el resultado en esta variable.33 Operador Descripción Es el operador de asignación sencilla. Sustrae el valor de la derecha a la variable del lado izquierdo y almacena el resultado en esta variable. Multiplica la variable del lado izquierdo por el valor de la parte derecha y almacena el resultado en esta variable.Programación Java básica: Operadores en Java 7 . // divide partirProducto por 2 y guarda el resultado en // partirProducto partirProducto /= 2. //multiplica productoFinal por 10 y guarda el resultado en //productoFinal productoFinal *= 10. Se presenta a continuación algunos ejemplos para estos operadores de asignación aritmética: // incrementa valorTotal en 4 y guarda el resultado en // valorTotal valorTotal += 4. La forma tradicional de realizar el incremento de una unidad es la siguiente: variable1 = variable1 + 1. y = += –= *= /= %= Obtiene el residuo de la división de la variable del lado izquierdo por el valor del lado derecho y almacena el resultado en la misma variable. // obtiene el residuo de dividir residuoFinal por 10 y guarda el // resultado en residuoFinal residuoFinal %= 10. // le resta a valorTotal la cantidad 10 y guarda el resultado en //valorTotal valorTotal -= 10. Operadores de incremento y decremento Permiten adicionar o substraer de una manera simplificada la unidad a una variable dada.

Ejemplo 6: El siguiente ejemplo ilustra la utilización del operador de incremento ++ para incrementar la variable controladora del ciclo de repeticiones i .Programación Java básica: Operadores en Java 7 . y luego si se incrementa el operando.//decrementa en la unidad a variable2 Los operadores ++ y -. para generar las siguientes instrucciones equivalentes a las indicadas arriba: ++variable1.// incrementa en la unidad a variable1 variable2 -= 1.34 variable1 variable2 = variable2 . se obtiene primero el valor del operando sin modificación para la variable del lado izquierdo. En el siguiente ejemplo el operando antecede al operador y la variable2 toma el valor 65 y la variable1 se incrementa a 66.//decrementa en la unidad a variable2 Java conserva la notación introducida por el C++. aquí variable1 toma el valor 66 y en variable2 el de 66. o en la expresión correspondiente. Cuando el operando antecede al operador.para decrementarla en el segundo caso.//decrementa en la unidad a variable2 Cuando el operador antecede al operando. el operando es modificado antes de que el valor sea obtenido para su asignación a la variable del lado izquierdo. variable1= 65.. Esa diferencia se ilustra en el siguiente ejemplo variable1= 65. o preceder al operando como en el siguiente caso: variable1++.1.// incrementa en la unidad a variable1 --variable2.pueden anteceder al operando. mediante los operadores ++ y -. variable2 =variable1++. variable2 =++variable1. //decrementa en la unidad a variable2 Mediante los operadores aritméticos de asignación de incremento/decremento (+= y -=) se pueden escribir de la siguiente manera: variable1 += 1.// incrementa en la unidad a variable1 variable2--. como en el ejemplo. . en el primer caso y el operador -.

i++) { salida1 = salida1+"\nvalor de i = " + i. float.Programación Java básica: Operadores en Java 7 . char .showMessageDialog(null.salida2). integer. class ContCreceDecrece{ public static void main (String args[]) { String salida1 ="Valores crecientes de i:". // el siguiente segmento es creciente for (int i = 0. Los operandos de tipo integer. i--) { salida2=salida2+"\nvalor de i = " + i. } } Los siguientes son los resultados obtenidos: Figura 11 Resultados de la clase ContCreceDecrece Figura 12 Resultados de la clase ContCreceDecrece Operadores Relacionales Los operadores relacionales permiten establecer la relación de un operando respecto de otro. i > 0.JOptionPane.35 import javax. pueden ser comparados mediante el operador de igualdad lógica == y el de desigualdad lógica !=. } JOptionPane.salida1). } JOptionPane.swing. // el siguiente segmento es decreciente for (int i = 7. char y boolean. String salida2 ="Valores decrecientes de i:". i < 7. Cualquier tipo de operandos.showMessageDialog(null. float.

import javax. b = "+b+".swing.JOptionPane. c=5. Mayor o igual que. class OperacionesRelacionales{ public static void main(String args[]){ int a. No igual a. b. El resultado de una operación relacional es de tipo booleano. Los siguientes son los operadores relacionales. Operador Descripción Igual a. d=2. si es o no verdadero (true) que a sea mayor o igual que b. boolean resultado. a=2. salida = salida +"\n a == d: "+resultado. resultado = c >= d. JOptionPane. b. salida=salida +"\n c >= d: "+resultado. d. salida = "Valores de: a = "+a+". los cuales se utilizan frecuentemente en las expresiones que controlan los diferentes tipos de ciclos. } } El cual dará los siguientes resultados: . Operador Descripción Menor que. String salida.salida). d y determina. c = "+c+ ". c. d = "+d. resultado = a == d. Menor o igual que. así como en las expresiones de selección.showMessageDialog(null. c. == != > < >= <= Ejemplo 7: Desarrollar un programa que permita leer cuatro valores. salida=salida + "\nResultados: \na > b: "+resultado. Mayor que.Programación Java básica: Operadores en Java 7 . b=3. así mismo si a es igual a d y si c es mayor o igual que d. resultado = a > b.36 pueden ser usados para efectos de comparación mayor que o menor que. a.

XOR (^) y NOT (!). Los resultados de las operaciones. dependiendo de los valores que tomen A y B. A y B. Los siguientes son los operadores lógicos booleanos: Operador & | ^ || && ! Resultado AND lógico OR lógico XOR lógico exclusivo) OR en corto circuito AND en corto circuito NOT unitario lógico (OR Operador &= |= ^= == != ?= Resultado Asignación AND Asignación OR Asignación XOR Igual a Distinto de If-then-else ternario Operadores lógicos booleanos básicos Los operadores lógicos booleanos básicos corresponden a AND (&). La primera fila indica los nombres de los operandos.Programación Java básica: Operadores en Java 7 . Estos operan solamente sobre operandos booleanos. se ilustran en las filas siguientes. dando como resultado un valor booleano. El valor verdadero (true) se representa con V y el valor falso (false) con F: . La siguiente tabla ilustra el resultado de la operación de cada operandor para dos operandos A y B de tipo lógico. los operadores condicionales o lógicos booleanos. seguidos de las operaciones lógicas a evaluar.37 Figura 13 Resultados de la clase OperacionesRelacionales Operadores lógicos booleanos Frecuentemente los operadores relacionales se utilizan en conjunto con otro conjunto de operadores. OR (|).

"\n false ^ false: " + ( false ^ false ) + 29. import javax. salida += "\n\n Operador logico OR (||)" + 13. salida += "\n\n Operador logico Booleano AND (&)" + 18. salida += "\n\n Operador logico NOT (!)" + 33. "\n true ^ true: " + ( true ^ true ). "\n !false: " + ( !false ) + . 7. salida += "\n\n Operador logico Booleano OR inclusivo (|)" + 23.*. salida += "\n\n Operador logico Booleano OR exclusivo (^)" + 28. "\n false || false: " + ( false || false ) + 14. "\n false || true: " + ( false || true ) + 15. "\n true & true: " + ( true & true ). 5. 27. String salida = "". "\n true && true: " + ( true && true ). 4. 17. salida += " Operador logico AND (&&)" + 8. "\n false | true: " + ( false | true ) + 25.38 A F V F V B F F V V A|B F V V V A&B F F F V A^B F V V F !A V F V F Ejemplo 8: Desarrollar un programa que permita generar las tablas de verdad para diferentes operadores logicos booleanos: 1. "\n false ^ true: " + ( false ^ true ) + 30. "\n false & true: " + ( false & true ) + 20.swing. 6. "\n true || true: " + ( true || true ). "\n true || false: " + ( true || false ) + 16. "\n true ^ false: " + ( true ^ false ) + 31. "\n false | false: " + ( false | false ) + 24. 32. "\n false && true: " + ( false && true ) + 10. 20 ). "\n true | true: " + ( true | true ). "\n true | false: " + ( true | false ) + 26. "\n false && false: " + ( false && false ) + 9. "\n true && false: " + ( true && false ) + 11.Programación Java básica: Operadores en Java 7 . "\n false & false: " + ( false & false ) + 19. public static void main( String args[] ) { JTextArea areaSalida = new JTextArea( 17. JScrollPane scroller = new JScrollPane( areaSalida ). public class OperadoresLogicos { 3. "\n true & false: " + ( true & false ) + 21. 2. 12. 22.

El carácter de escape (\n) permite como en otros ejemplos. } En este programa se construyen los resultados de evaluar las tablas de verdad. Dentro de este componente se coloca como argumento el componente areaSalida. lo cual permite que el área de texto pueda ser visualizada en su totalidad utilizando el ratón.Programación Java básica: Operadores en Java 7 . mediante la variable salida de tipo String. 37. el objeto areaSalida carga los resultados guardados en salida. Los resultados que se obtienen al ejecutar el programa son los siguientes. 36. scroller. areaSalida. es decir. 17. 39. 35. Linea 35: mediante el método setText() de la clase JtextArea. 40. "\n !true: " + ( !true ). 27 y 32. Su desplazamiento es en el sentido horizontal ( en la parte inferior del área) y en el sentido vertical (en la parte derecha del área). 38. Observese el control desplazable del lado derecho. Linea 38: para terminar la ejecución del programa se invoca el método exit (0) de la clase System.exit( 0 ).} System. Al área de texto se le asigna 17 columnas. Veamos a continuación las explicaciones referidas a los nuevos elementos involucrados en el programa: Línea 4: se crea un objeto areaSalida del tipo JtextArea que es una clase a partir de la cual se crean componentes para generar áreas de texto editable. por 20 filas medidas en caracteres. Línea 36: se utiliza el método showMessageDialog del componente JoptionPane para mostrar los resultados que se han cargado en el componente scroller. JOptionPane. " Tablas de verdad".INFORMATION_MESSAGE ). que es una clase a partir de la cual se crean componentes desplazables. JOptionPane. a fin de elaborar un reporte.setText( salida ).39 34. saltar a la siguiente línea. que se puede modificar en la pantalla. Obsérvese cómo se van agregando los diferentes mensajes y resultados en las líneas 7.showMessageDialog( null. Linea 5: se crea un objeto scroller del tipo JScrollPane. 22. . 12.

En algunos casos esto puede no ser deseable.40 Figura 14 Resultados de la clase OperadoresLogicos Operadores lógicos booleanos en cortocircuito Son los operadores && y || que corresponde a versiones secundarias de los operadores básicos AND (&) y OR (|). refiérase a la discusión anterior sobre pre y post-incremento y operadores de asignación. Las formas de los operadores en cortocircuito && y ||.Programación Java básica: Operadores en Java 7 . si el operando A es falso (F) el operador AND (&) dará como resultado falso (F). Como se puede observar en la tabla de operadores booleanos. independiente del valor del operando B. De igual manera. el operador OR (|) dará como resultado verdad (V) cuando A sea verdad (V) independiente del valor del operando B. en lugar de las formas & y | hará que Java no se preocupe en evaluar el operando o expresión del lado derecho cuando el resultado de la operación ya este decidido a partir del operando o expresión del lado izquierdo. y se les denomina operadores lógicos en cortocircuito. .

Instrucciones de control de flujo: selección La mayoría de los programas que usted realice requerirán que bajo ciertas condiciones se ejecuten unas instrucciones mientras se evitan ó saltan otras. La siguiente tabla lo ilustra: Operador &= |= ^= Uso op1 &= op2 op1 |= op2 op1 ^= op2 Equivalencia op1 = op1 & op2. direccionar el flujo de la ejecución de un programa hacia uno de dos caminos diferentes. true o false. esta instrucción permite. |= y ^=. puede ser una instrucción simple o un conjunto de instrucciones. Java permite este propósito mediante las instrucciones de selección (if . expresión booleana es cualquier expresión de tipo lógico. con base a la evaluación de un predicado o condición de tipo lógico. . permite hacer que la variable del lado izquierdo tome el valor resultante de evaluar la expresión formada por esta variable con la expresión del lado derecho del operador.. op1 = op1 ^ op2. Instrucción if . es decir que su resultado al ser evaluada da un valor lógico.else) y de selección múltiple (switch). } else { . en cuyo caso se deben agrupar entre corchetes {} y formar un bloque de instrucciones. op1 = op1 | op2.. La forma general de esta instrucción en Java es como sigue: if (expresión booleana) instrucción1.Programación Java básica: Operadores en Java 7 .. como en el siguiente caso: if (expresión booleana) { instrucción11. Instrucción1. instrucción12. instrucción2.41 Operadores lógicos de asignación Los operadores &=. else instrucción2.else Tal como se vio en el Capítulo 2.

. no se ejecutara instrucción1 o el bloque si es mas de una instrucción.. En el siguiente caso se tiene la forma del if simple. instrucción12. lo que significa que puede no utilizarse. . como lo indica la siguiente forma. .. } instrucción3. tanto simple como en su forma con bloque de instrucciones: if (expresión booleana) instrucción1.. if(a > b) c= a+b. En ningún caso se ejecutarán ambas instrucciones. se continuará con la instrucción d=a*b. y se ejecutará la instrucción2 o el bloque en caso de ser mas de una instrucción.) y no se ejecutará la instrucción2 o bloque de instrucciones en caso de haber más de una (instruccion11. En el anterior segmento de código si a es mayor que b.Programación Java básica: Instrucciones de control de flujo: selección 7 42 instrucción21. de lo contrario hace c= a*b. instrucción3. puesto que independiente de la ejecución de c=a+b.. Los siguientes ejemplos que ilustran diferentes situaciones: // ejemplo del if-else con instrucciones simples int a.. .). La claúsula else es de carácter opcional. se continuará con la siguiente instrucción después del if. instrucción22. Si la expresión booleana toma el valor false. b. } La instrucción opera de la siguiente manera: si expresión booleana toma el valor true. else c= a*b. c.. se ejecutara la instrucción1 o el bloque de instrucciones en caso de haber más de una (instruccion11. en cuyo caso independiente de la ejecución o no de instrucción1. hace c= a+b... instrucción12. En la forma de bloque de instrucciones dentro del cuerpo del if: if (expresión booleana){ instrucción1.

En el siguiente ejemplo la segunda instrucción if contiene dos bloques con instrucciones en lugar de una sola como en el primer caso. f. 7. d= 90. c. if(k>200) 6. El siguiente segmento de programa ilustra esta situación: 1. f= b+c+a. e=4. obviamente del tipo boolean. d. f=b*c + a. if(d){ a=b+c+e. else 8. b. . boolean d. c=3. } Instrucciónes if anidadas Es muy común que en los programas sea necesario que la evaluación del predicado de una instrucción if o if-else sea el destino de otra instrucción if o if-else. if(j<i) 4.if(i == 20){ 3. else d=false. int a=1. Así mismo se observa que la expresión booleana. es importante tener en cuenta que. b=2. en cuyo caso se denominan if anidados. 2. } else{ a=b*c*e. esta formada por una sola variable. if(a > b) c= a+b. j. d= a*b. una cláusula else se refiere a la instrucción if mas cercana que esté dentro del mismo bloque y que no tenga asociación con otro else. 5.else 11. 9. c. if(a > b) d=true. Cuando se utilizan if anidados. } 10. d.int i. b. c=40. k. b=c. a=34.Programación Java básica: Instrucciones de control de flujo: selección 7 43 // ejemplo del if simple con instrucciones simples int a.

cada una de las instrucciones puede ser formada a su vez por bloques encerrados entre corchetes. Si el predicado (j<i) en la linea 3 es verdadero. El ultimo else de la línea 10. Ejecutará las líneas 3 a la 9. y ejecutará la línea 11. La siguiente es la forma general de estas instrucciones: if(expresión booleana1)instrucción1. no ejecutará la línea 6 y ejecutará la línea 8. y la instrucción b=c en la línea 11 está asociado con el primer if(i==20). ejecutará la línea 4 y continuará con la línea 5. no ejecutará las lineas de la 3 a la 9. else if(expresión booleana3) instrucción3. } else if(expresión booleana3){ . Recuerdese que. ... en cuyo caso se ejecuta la instrucción asociada y no se ejecuta ninguna de las siguientes. } else if(expresión booleana2){ instrucción2. Instrucciónes if -else. d=90 correspondiente al else de la linea 7. Si el predicado de la línea 3 es falso. else instrucción4. y estos a su vez pueden contener otras instrucciones if como en la forma siguiente: if(expresión booleana1){ instrucción1. Si el predicado de la línea 5 es verdadero. si ninguna de las expresiones booleanas es verdadera..Programación Java básica: Instrucciones de control de flujo: selección 7 44 El cuerpo del primer if va entre la línea 2 y la línea 11. la línea 8. . Ahora. En esta forma las instrucciones if se ejecutan de arriba hacia abajo.. en la línea 2. hasta que alguna de las expresiones booleanas sea verdadera.. Como se estableció antes.if múltiples Las instrucciones if -else. ejecutará la línea 6 y no hará la línea 8. Si el predicado (i==20) es falso.if múltiples constituyen también una práctica común en la programación y se fundamentan en la utilización de secuencias de if anidados. si el predicado es verdadero y no ejecutará la línea 11.. Si este predicado es falso. no ejecutará la linea 4 y continuará con la línea 5. de la línea 5 ya que es el mas cercano y que se encuentra en el mismo bloque. else if(expresión booleana2) instrucción2. está asociado con el if(k>200). se ejecutará la instrucción asociada con el ultimo else.

grupo. } Ejemplo 9: Ilustra el caso de los if anidados para la situación de una aplicación que lee un valor entero. else if((edad > 18) && (edad < 60)) grupo = "adulto". correspondiente a la edad de una persona.showMessageDialog(null.Programación Java básica: Instrucciones de control de flujo: selección 7 45 instrucción3. } else { instrucción4. "La edad "+edad+" corresponde a "+ grupo). /* en esta serie de if-else if se encuentra el grupo a que pertenece esa edad */ if(edad <= 18) grupo ="menor". y determina el grupo de edad en el que se encuentra esa persona: import javax... La ejecución de este programa arrojara el siguiente resultado: . class GrupoEdad{ public static void main(String edadLeida[]) { String entrada. edad = Integer. int edad.showInputDialog("Digite una edad").parseInt(entrada). entrada = JOptionPane. else grupo = "cuarta edad"... } } En este ejemplo se ilustra la utilización de expresiones booleanas compuestas en los dos else if para determinar el rango en donde se encuentra la edad.. .. else if ((edad >= 60) && (edad < 100)) grupo="tercera edad".JOptionPane.swing. . JOptionPane.

class CalculaEstacion{ public static void main(String argumento[]) { String entrada. import javax. int mes.Programación Java básica: Instrucciones de control de flujo: selección 7 46 Figura 15 Entrada de datos para la clase GrupoEdad Figura 16 Resultados de la clase GrupoEdad Ejemplo 10: En el siguiente ejemplo se introduce un valor entero correspondiente al número de un mes (entre 1 y 12) y permite encontrar la estación que corresponde a ese mes en particular. } . estacion. mes = Integer. entrada=JOptionPane. else estacion="valor invalido de mes".showInputDialog("Digite el número de un mes:"). else if(mes==6||mes==7||mes==8) estacion="verano". else if(mes==3||mes==4||mes==5) estacion="primavera". "El mes "+mes+" es "+estacion). if(mes==12 ||mes==1||mes==2) estacion = "invierno".parseInt(entrada).JOptionPane. JOptionPane. else if(mes==9||mes==10||mes==11) estacion="otoño".swing.showMessageDialog(null.

public class ComparaEnteros{ public static void main( String args[] ) { String primerValor.showInputDialog( "Digite el segundo valor entero:" ).parseInt( segundoValor ). resultado = "". primerValor = JOptionPane. if ( valor1 < valor2 ) .showInputDialog( "Digite el primer valor entero:" ).JOptionPane.resultado. valor2.swing. segundoValor. int valor1. valor2 = Integer. valor1 = Integer. segundoValor = JOptionPane. if ( valor1 != valor2 ) resultado = valor1 + " != " + valor2.parseInt( primerValor ). if ( valor1 == valor2 ) resultado = valor1 + " == " + valor2.Programación Java básica: Instrucciones de control de flujo: selección 7 47 } Los resultados del programa se ilustran a continuación: Figura 17 Lectura datos clase CalculaEstacion Figura 18 Resultados clase CalculaEstacion Ejemplo 11: Desarrollar un programa que permita leer dos valores enteros y determinar sus relaciones entre ellos: import javax.

} } Figura 19 Lectura datos ComparaEnteros Figura 20 Lectura datos ComparaEnteros . JOptionPane. if ( valor1 <= valor2 ) resultado = resultado + "\n" + valor1 + " <= " + valor2.exit( 0 ). "Resultados de la comparacion". if ( valor1 > valor2 ) resultado = resultado + "\n" + valor1 + " > " + valor2. resultado. System. JOptionPane. if ( valor1 >= valor2 ) resultado = resultado + "\n" + valor1 + " >= " + valor2.showMessageDialog( null.INFORMATION_MESSAGE ).Programación Java básica: Instrucciones de control de flujo: selección 7 48 resultado = resultado + "\n" + valor1 + " < " + valor2.

Cada uno de los valores debe ser un literal. .instruccionN) se debe ejecutar. . En el lenguaje algorítmico se estableció la instrucción caso para este tipo de situaciones. } expresion es la expresión a evaluar cuyo valor resultante debe ser simple y compatible con cada uno de los valores (valor1. . entre los diferentes bloques case. La siguiente es la forma general de la instrucción switch : switch(expresion) { case valor1: instruccion1. dependiendo del valor de una variable o evaluación de una expresión. valor2. break.. . no una variable. default: instruccionM. dentro de su cuerpo. break.. . break. case valorN: instruccionN. . case valor2: instruccion2. ademas que deben ser valores únicos sin repeticiones o duplicados. es decir debe ser una constante.valorN) en seguida de las clausulas case y que determina que instrucción ( instruccion1. instruccion2.Programación Java básica: Instrucciones de control de flujo: selección 7 49 Figura 21 Resultados clase ComparaEnteros Instrucción de selección múltiple switch Esta instrucción permite transferir el control a diferentes partes del programa.

.. . } break.... . .Programación Java básica: Instrucciones de control de flujo: selección 7 50 La forma de la instrucción switch para el caso de bloques de instrucciones dentro de cada una de las opciones de las sentencias case es de la siguiente manera: switch(expresion) { case valor1:{ instruccion1.. . Si ninguno de los valores corresponde con el resultado de la expresión entonces se ejecutará por defecto la clausula default. Nótese que la instrucción break se utiliza aquí para “saltar fuera” del switch. } } La instrucción switch opera de la siguiente manera: el resultado de evaluar la expresion. Esta cláusula es opcional. Si coincide con alguno de los valores constantes (valor1. no se realiza ninguna operación y el control se da a las instrucciones que siguen después de la instrucción switch.. a la primera línea de código o instrucción que sigue después de la instrucción . case valor2:{ instruccion2. default:{ instruccionM.. . .. si ningún valor coincide y no está la cláusula default . valor2. se compara con cada uno de los valores indicados en cada una de las cláusulas case. sin embargo... . } break. ..valorN) se ejecutará la instrucción ( o instrucciones) correspondiente a la cláusula case cuyo valor coincide y mediante la instrucción break se interrumpe esa secuencia para darle el control ó saltar a las instrucciones o código que siguen despues de la instrucción switch .. case valorN:{ instruccionN. } break.

parseInt(entrada). String.00. break. case 38: precio=(float)33000. char. break. float precio=0. short. talla = Integer. do{ entrada=JOptionPane.} while(!(talla>= 34 && talla <=40)). break. case 40: precio=(float)34000. Una limitación importante de la instrucción switch en Java es que solo puede seleccionar opciones del tipo byte. } JOptionPane. String entrada. class ValorAPagar{ public static void main(String args[]) { int talla. ni ningún otro tipo de objeto. ustra la utilización de la instrucción switch : import javax.showMessageDialog(null. break. case 36: precio=(float)32000."El precio de la talla "+talla+" es $"+precio). double.00. switch(talla) { case 34: precio=(float)30000.Programación Java básica: Instrucciones de control de flujo: selección 7 51 switch. Para las situaciones no contempladas en el switch. int y long. se debe utilizar entonces la instrucción if-else.00.JOptionPane. Tampoco se pueden utilizar relaciones diferentes a la igualdad.00.swing. No se puede utilizar en las opciones valores primitivos float.showInputDialog("Digite una talla de camisa \n34 a 40:"). } } La ejecución de este programa da como resultado: . Ejemplo 12: El siguiente ejemplo para el calculo del valor a pagar por una camisa dependiendo de su talla.

el programa quedaría de la siguiente manera: import javax. break. String entrada.showInputDialog("Digite una talla de camisa \n34 a 40:").swing.parseInt(entrada). case 38: case 40: . talla = Integer.Programación Java básica: Instrucciones de control de flujo: selección 7 52 Figura 22 Lectura datos clase ValorAPagar Figura 23 Resultados clase ValorAPagar Ejemplo 13: Ahora si se quisiera asignar a las tallas 34 y 36 3l mismo valor. class ValorAPagar1{ public static void main(String args[]) { int talla.00. float precio=0.} while(!(talla>= 34 && talla <=40)). asi como a las 38 y 40. do{ entrada=JOptionPane.JOptionPane. switch(talla){ case 34: case 36: precio=(float)32000.

} JOptionPane. } } Como se puede observar se ha omitido la instrucción break en las opciones 34 y 38.Programación Java básica: Instrucciones de control de flujo: selección 7 53 precio=(float)34000. agrupándolas con la 36 y con la 40 respectivamente."El precio de la talla "+talla+" es $"+precio).resultado. .00.swing. El resultado para la ejecución de este programa es el siguiente: Figura 24 Entrada datos clase ValorAPagar1 Figura 25 Resultados clase ValorAPagar1 Ejemplo 14: En el siguiente caso se utiliza la cláusula default para indicar que una calificación no es aprobatoria: import javax. break.showMessageDialog(null. El programa continúa su ejecución hasta que encuentre un break o hasta el final del bloque switch.*. class ApruebaNoAprueba{ public static void main(String args[]) { String entrada.

switch(nota) { case 10: case 9: case 8: case 7: case 6: resultado = "Aprobado". break.} while(!(nota>= 1 && nota <=10)). default: resultado = "Reprobado"."Su calificación es "+resultado).Programación Java básica: Instrucciones de control de flujo: selección 7 54 int nota. nota = Integer. } } El programa al ser ejecutado dará la siguiente salida: Figura 26 Lectura datos clase ApruebaNoAprueba Figura 27 Resultados clase ApruebaNoAprueba .parseInt(entrada).exit(0). System. do{ entrada=JOptionPane. } JOptionPane. break.showInputDialog("Digite una calificacion de 1 a 10:").showMessageDialog(null.

showInputDialog("Digite el número de un mes:"). case 3: case 4: case 5: estacion = "primavera". "El mes "+mes+" es "+estacion). } } Despues de compilar y ejecutar la clase anterior se obtienen los siguientes . break. mes = Integer.JOptionPane. class CalculaEstacion2{ public static void main(String argumento[]) { String entrada. switch (mes) { case 12: case 1: case 2: estacion= "invierno". solo que esta vez se utilizara la instrucción switch.showMessageDialog(null. y se leerá el valor del mes por medio del componente JoptionPane: import javax.exit(0).swing. case 6: case 7: case 8: estacion = "verano".Programación Java básica: Instrucciones de control de flujo: selección 7 55 Ejemplo 15: El siguiente ejemplo corresponde al del calculo de la estación a que corresponde un mes determinado. estacion. int mes. break. break. default: estacion="un valor invalido". entrada=JOptionPane.parseInt(entrada). break. System. case 9: case 10: case 11: estacion = "otoño". } JOptionPane.

como parte de un bloque de instrucciones de un switch externo. Instrucciones control de flujo: ciclos Java. hasta que se cumpla una condición determinada. Tal como se trató en el Capítulo 2. estas instrucciones ejecutan repetidamente el mismo conjunto de instrucciones contenidas en su bloque. repeticiones o bucles: for. while y do-while. como otros lenguajes de programación. se pueden utilizar las instrucciones switch. expresada por una expresión de tipo booleano. Mas adelante se presentará un ejemplo de uso de la instrucción switch anidada. tiene tres tipos de instrucciones para manejar ciclos. Cada bloque switch define su propio bloque. Lenguaje Algorítmico.Programación Java básica: Instrucciones de control de flujo: selección 7 56 resultados: Figura 28Lectura datos clase CalculaEstacion2 Figura 29 Resultados clase CalculaEstacion2 Instrucciones switch anidadas De igual manera que las instrucciones if-else anidadas. con lo cual no se producen conflictos entre las constantes o literales de las cláusulas case de cada instrucción switch. Con frecuencia este tipo de instrucciones se utilizan .

el cual puede no realizarse si la condición no es verdadera. por ejemplo en un problema de multiplicación de matrices. .Programación Java básica: Instrucciones control de flujo: ciclos 7 . Lo cual significa que. primero se evalúa la condición y dependiendo de esta se realiza o no el ciclo. se utilizará preferencialmente la instrucción for.] while (condición de terminación) { cuerpo. En este se incrementa la variable controladora del ciclo. Su forma general es la siguiente: [inicialización. Por ejemplo la variable que va a controlar el ciclo. • • La estructura lógica de los ciclos o bucles está formada de cuatro partes: • Inicialización: hace referencia al código que establece las condiciones de inicio del ciclo.57 asociadas con estructuras de datos del tipo arreglos. Se evalúa respecto de la variable controladora del ciclo. primero se realiza la acción o instrucciones del bloque y luego se pregunta por la condición. Si se requiere que el ciclo se repita al menos una vez es decir. para verificar si este debe terminar o continuar. mientras una condición o predicado lógico de terminación sea verdadera. Iteración: es el código que se ejecuta después del cuerpo pero antes de un nuevo ciclo o repetición. La diferencia sustantiva de cada una de las anteriores instrucciones radica en las características de la forma de control del ciclo respectivo: • Cuando se conoce de antemano el número de veces que se repetirá un ciclo. para realizar operaciones sobre cada elemento de la estructura. • • • Instrucción while Es la instrucción básica para el manejo de los ciclos o iteraciones. es decir. ya que permite ejecutar repetidamente una o mas instrucciones. se puede utilizar while. evalúa la condición antes de iniciar un ciclo. se puede utilizar do-while. Si se requiere de un ciclo el cual se ejecuta cero o mas veces. Terminación: Corresponde a una expresión de tipo booleano que es evaluada cada vez que se hace un ciclo. Cuerpo: comprende el bloque de instrucciones que se desea repetir con el ciclo y que es el propósito principal de este.

9. Así sucesivamente hasta que la condición de terminación se torna falsa.out. se incrementa la variable entero mediante la expresión entero++. valor de entero= “+entero). Línea 5: escribe los valores de la variable entero. la cual al evaluarse la primera vez. se realizará la generación de una línea en la pantalla con el valor de entero.println(“Ciclo terminado. } 8. al ser nuevamente verdadera. lo cual se logra cuando se ha generado la salida con System. se le asigna a la variable entero el valor 1.out. public static void main(String args[]){ 3.Programación Java básica: Instrucciones control de flujo: ciclos [iteración. que es la parte de iteración del ciclo. entero++. está variable forma parte de la condición de terminación. en la línea 4. 6.println para generar la salida en la pantalla de comandos. Línea 6: Después de escribir el valor entero generado la primera vez en la Línea 3.println. } 10. por tanto realiza la primera iteración del cuerpo del ciclo. System. 7. incrementando luego en la iteración su valor a 11. Mientras la condición sea verdadera. se realiza una vez mas el ciclo generando la salida e iterando nuevamente. da como resultado true. el cual hace que la condición de . while(entero <=10){ 5.class CicloWhile{ 2. System.} Linea 3: corresponde a la parte de inicialización del ciclo.] } 7 . el cual es iniciado con la instrucción while y la primer llave. del valor entero igual a 10. Se repite el proceso de evaluar la condición de terminación.out. Linea 4.9: cuerpo del ciclo. formado esta vez por la instrucción System.58 Ejemplo 16: Desarrollar un programa que permita generar y escribir los 10 primeros números enteros 1.println(“Numero = “+entero). int entero = 1.out. 4. es decir la variable entero es menor o igual a 10.

00" ). fx. b. aunque escribirá el mensaje de terminación. .public class EvaluaFuncion1{ 4. indicando el valor asignado a la variable.showInputDialog("Digite el valor para b "). Los valores de la evaluación de la función. 12. se escribirán en la pantalla. 9.text. 1. 7. 11. public static void main( String args[] ){ 5.DecimalFormat. Se continúa con la siguiente instrucción en la línea 8.*. double a. este nunca se realiza.showInputDialog("Digite el valor para a "). JTextArea outputTextArea = new JTextArea(10. 8. b = Double. 3. la cual genera un mensaje de terminación e indica el valor final de la variable entero.20). si el valor de la variable entero es mayor que 10 antes de iniciar el ciclo.swing. input= JOptionPane. String input. x. 6.import java. serán leídos por el teclado. a = Double. input = JOptionPane. b. dx. así como los de la ordenada x. JScrollPane scroller = new JScrollPane (outputTextArea).Programación Java básica: Instrucciones control de flujo: ciclos 7 . 2. Cuando se ejecuta el programa anterior da como resultado en la pantalla de comandos: Numero = 1 Numero = 2 Numero = 3 Numero = 4 Numero = 5 Numero = 6 Numero = 7 Numero = 8 Numero = 9 Numero = 10 Ciclo terminado. 13. 10.showInputDialog("Digite el valor para dx "). DecimalFormat precision = new DecimalFormat ( "0.59 terminación tome el valor false.import javax. y no realizándose mas el ciclo del while.parseDouble(input). Obsérvese que. dx. input = JOptionPane. Los valores para a. 14. valor de entero= 11 Ejemplo 17: Desarrollar un programa en Java que permita evaluar la función 2 f  x= x ­2 x entre los valores a y b (a < b) y a incrementos dx.parseDouble(input).

del tipo DecimalFormat a partir del constructor de esta o sea DecimalFormat(“0.Programación Java básica: Instrucciones control de flujo: ciclos 7 .JOptionPane. a partir del constructor JScrollPane(areaDeSalida). fx = x*x . En esta área se guardarán los resultados. 17. dx.20). a partir del constructor JTextArea(10.append(" "+precision.showMessageDialog( null. } 23. 21. . dx = Double. x=a. 20. el cual define un área de 10 columnas por 20 filas. y de salida fx y x. la cual puede contener cifras decimales en un valor real de tipo Double. Linea 8: crea un objeto areaDeSalida del tipo JTextArea. Linea 7: crea un objeto precision. b. se introduce la informacion para la cadena input. outputTextArea. de la clase Double. mediante el método parseDouble(input).00”). 18.exit( 0 ). while(x<=b){ 19. de tal manera que se podrá hacer desplazamiento horizontal y vertical de la información mostrada. Lineas12-15: se hace la misma operación para introducir y convertir a valores reales los valores para b y dx. elc ual se almacena en a. outputTextArea. System. en el cual define que tendrá dos cifras decimales en la salida de resultados. x = x+dx. el cual se requiere para dar formato a la salida de resultados de las variables reales x y fx.format(x)+ "\n"). Linea 11: se convierte la cadena leida input. 22.INFORMATION_MESSAGE ). Linea 5:define de tipo double a las variables de entrada a. JOptionPane.60 15. 25. scroller.} Linea 1: se importa la clase DecimalFormat.2*x. "Evalua Funcion f(x) = x*x -2*x". 24.parseDouble(input).format(fx) + "\t"+ precision. 16.append( " valor x\tvalor f(x) \n" ). Linea 9: crea un objeto scroller del tipo JScrollPane. } 26. Linea 10: mediante el componente JoptionPane. el cual contendrá el objeto areaDeSalida.

para los valores de a. Linea 23: se escriben los resultados del objeto scroller. asigna a la variable x el valor del punto inicial a. Linea 18: inicio del ciclo. es decir que.61 Linea 16. el texto correspondiente a los resultados de fx y x. Linea 24: se invoca el método exit(0).Programación Java básica: Instrucciones control de flujo: ciclos 7 . Obsérvese el uso del método format() del objeto precision. el cual es controlado por el predicado o condición (a<=b). Los resultados obtenidos al ejecutar el anterior programa. Obsérvese la utilización del comando de escape \t para hacer un tabulado. para terminar la ejecución del programa. para darle formato de salida con dos decimales. dx dados son los siguientes: Figura 30 Lectura valor a . Linea 21: se incrementa la variable x en el valor dx y se repite el ciclo si la condición de la línea 18 sigue siendo verdadera. Linea 19: cálculo del valor de fx mediante la evaluación de la expresión para un valor de x. Se coloca un título “Evalua Funcion f(x) = x*x – 2*x” en la parte superior de la ventana del componente JOptionPane y se utiliza la constante INFORMATION_MESSAGE. la primera línea de texto al objeto areaDeSalida. así como el del \n para saltar a una nueva línea. Linea 17. mediante el método append(). se ejecutarán las instrucciones del cuerpo del ciclo while denotadas por el par de llaves {}. b. mientras esa condición sea verdadera. La variable x es la que controlará la ejecución del ciclo. se agrega. Linea 20: agrega al objeto areaDeSalida. a las variables fx y x. para que aparezca un ícono alusivo a información.

.Programación Java básica: Instrucciones control de flujo: ciclos 7 . public class PromedioEnteros { public static void main( String args[] ) { int total= 0. valorEntero.JOptionPane. contador= 0.swing.62 Figura 31 Lectura valor b Figura 32 Lectura valor dx Figura 33 Resultados clase EvaluaFuncion Ejemplo 18 : Desarrollar un programa que permita leer 5 valores enteros y calcular su promedio: import javax.

JOptionPane. 13.\nSi digita -9 termina el programa" ). valorEntero = Integer. while ( contador < 5 ) { entrada = JOptionPane.showInputDialog( "Digite un valor entero.JOptionPane. . System. String entrada. "Calculo Promedios".Programación Java básica: Instrucciones control de flujo: ciclos promedioEnteros.63 String entrada.INFORMATION_MESSAGE ). 12.showMessageDialog( null. public class PromedioEnteros1 { public static void main( String args[] ) { int total= 0.parseInt( entrada ). 7 . "El promedio de los valores leidos es: " + promedioEnteros. 11. contador = contador + 1. } } Los resultados obtenidos al digitar los valores enteros 10. valorEntero. import javax.parseInt( entrada ). JOptionPane.showInputDialog( "Digite un valor entero > 0: " ). while ( valorEntero != -9 ) { total = total + valorEntero. entrada = JOptionPane. Se debe escribir también el numero de valores leídos. 14 enteros son los siguientes: Figura 34 Resultados clase PromedioValores Ejemplo 19: Desarrollar el problema anterior pero esta vez el ciclo se hace con un registro centinela.swing. } promedioEnteros = total / 5. promedioEnteros. contador= 0. valorEntero =Integer. total = total + valorEntero.exit( 0 ).

15 ). while ( contador <= 15 ) { g. import java. import javax.exit( 0 ). 7 . 90. JOptionPane.Programación Java básica: Instrucciones control de flujo: ciclos contador = contador + 1. 15. } } } El programa HTML para ejecutar el anterior applet es el siguiente: .parseInt( entrada ). entrada = JOptionPane.showInputDialog( "Digite un valor entero > 0: " ). "El promedio de los "+contador+" valores leidos es: " + promedioEnteros. 40. contador*5. 110. 130. 120. "Calculo Promedios". } } Los resultados obtenidos al ejecutar el programa anterior con los datos.JApplet.awt.64 } promedioEnteros = total / contador. 20.INFORMATION_MESSAGE ).drawRect(contador*20. 100.showMessageDialog( null. JOptionPane. 30.swing. 50. 70. es el siguiente: Figura 35 Resultados clase PromedioEnteros1 Ejemplo 20: Desarrollar un programa Java tipo Applet que permita dibujar 15 rectángulos.Graphics. 60. ++contador. -9. 10. valorEntero = Integer. public class ContadorWhile1 extends JApplet { public void paint( Graphics g ){ int contador = 1. 80. System.

inicialización. iteración y condición de terminación. Esto significa que.65 <html> <applet code="ContadorWhile1. La forma general de esta instrucción es: [inicializacion. ilustra en este caso. El ejemplo visto antes de la generación de los 10 primeros números enteros . la evaluación de la condición de terminación se hace al final del ciclo y no antes del ciclo como en la instrucción while vista antes. Ejemplo 21: 1. se realiza al menos una sola vez el ciclo.class CicloDoWhile{ . la utilización de la instrucción do-while . tienen el mismo significado dado antes en la instrucción while. cuerpo. [iteración.class" width=350 height=105> </applet> </html> Los resultados son los siguientes: Figura 36 Resultados applet ContadorWhile1 Instrucción do-while En esta instrucción de ciclo. aunque la condición de terminación sea falsa.Programación Java básica: Instrucciones control de flujo: ciclos 7 .] } while(condición de terminación).] do { cuerpo.

pero esta vez utilizando la instrucción de ciclo do-while.println(“Numero = “+entero). Los resultados obtenidos son similares al ejemplo visto antes: Numero = 1 Numero = 2 Numero = 3 Numero = 4 Numero = 5 Numero = 6 Numero = 7 Numero = 8 Numero = 9 Numero = 10 Ciclo terminado. la condición a evaluar al final de cada ciclo de la línea 7. 8. public class EvaluaFuncion2{ public static void main( String args[] ) double a. x. el control de terminación del ciclo se realiza una vez ha hecho la iteración. valor de entero= 16 Ejemplo 22 : Desarrollar el mismo problema del ejemplo anterior.println de la línea 8. 3.swing. 6. 5. dx. }while(entero<10). La instrucción do-while va entre las lineas 4 y 7.} En la línea 3 se inicializa la variable entero con el valor 1. } 10. 7. Una vez agotado el ciclo con la condición de la línea 7. en cuyo caso se dará el siguiente resultado: Numero = 15 Ciclo terminado. b. System. se realizará el primer ciclo.println(“Ciclo terminado. entero++. System.*. 9.DecimalFormat.66 public static void main(String args[]){ int entero = 1. 7 . a fin de que controle con sus incrementos sucesivos en la línea 6.out. import javax. valor de entero= 11 Como se puede observar. 4. fx. se da control a la siguiente instrucción después dl ciclo.Programación Java básica: Instrucciones control de flujo: ciclos 2. { . aunque el valor de la variable en su inicialización fuera 15 por ejemplo. con lo cual.out.text. valor de entero= “+entero). do{ System. import java.out.

areaDeSalida. "Evalua Funcion f(x) = x*x -2*x". input = JOptionPane.showInputDialog("Digite el valor para dx "). x=a. input= JOptionPane. DecimalFormat precision = new DecimalFormat ( "0.67 String input.20).showInputDialog("Digite el valor para b "). b. scroller.format(fx) + "\t"+ precision. JTextArea areaDeSalida = new JTextArea(10.parseDouble(input). y dx son los siguientes: .2*x. JOptionPane. } } Los resultados obtenidos por el anterior programa para los mismos valores de a.showMessageDialog(null.parseDouble(input). input = JOptionPane.INFORMATION_MESSAGE ).showInputDialog("Digite el valor para a "). dx = Double.append(" "+precision.format(x)+ "\n").exit( 0 ).append( " valor x\tvalor f(x)\n" ). areaDeSalida.00" ). System. a = Double. JScrollPane scroller = new JScrollPane(areaDeSalida).parseDouble(input). do { fx = x*x . b = Double. JOptionPane.Programación Java básica: Instrucciones control de flujo: ciclos 7 . }while(x<=b). x = x+dx.

import java.68 Figura 37 Resultados clase EvaluaFuncion2 Ejemplo 23: desarrollar un apllet que permita dibujar 15 rectángulos.awt.swing. 15 ). do{ g. public class ContadorDoWhile extends JApplet { public void paint( Graphics g ){ int contador = 1. } } El programa HTML para ejecutar el anterior applet es el siguiente: <html> <applet code="ContadorDoWhile. 15. } while(contador <=15).Programación Java básica: Instrucciones control de flujo: ciclos 7 . ++contador.class" width=350 height=105> </applet> </html> Los resultados son los siguientes: . contador*5.JApplet.Graphics.drawRect(contador*20. import javax.

for(entero=1. la instrucción for de la línea 3.out. 4.Programación Java básica: Instrucciones control de flujo: ciclos 7 . condicion de terminación. } 8. se ejecutara solamente . 6. int entero. contiene tanto la incialización de la variable. public static void main(String args[]){ 3. entero <= 10. iteracion ) cuerpo.condicion de terminación. 7.out. System. valor de entero= “+entero). su utilización radica en que se conoce de antemano el número de veces que se debe realizar el ciclo. iteracion.69 Figura 38 Resultados applet ContadorDoWhile Instrucción for Esta instrucción presenta una forma compacta para realizar los ciclos.} Como se puede observar. su forma general es la siguiente: for (inicializacion. inicializacion.println(“Numero = “+entero). como la condición de terminación y el incremento o decremento de la variable controladora del ciclo. cuerpo. El mismo ejemplo tratado en las dos instrucciones anteriores se presenta a continuación para ilustrar la instrucción for: Ejemplo 24: 1. El cuerpo dl ciclo va entre las líneas 5 y 7. el cual debe ser delimitado con las llaves o corchetes para indicar el ámbito del ciclo. tienen el mismo significado dado antes..class CicloFor{ 2.println(“Ciclo terminado. entero++. Si no se especifica el cuerpo con llaves.) 5. System.

contador++ ) g. for (contador = 1. contador <= 15.Programación Java básica: Instrucciones control de flujo: ciclos 7 . contador*5.swing.Graphics. 15. valor de entero= 11 Ejemplo 25: dibujar 15 rectángulos con la instrucción For. Los resultados obtenidos una vez se ejecute el programa son los siguientes: Numero = 1 Numero = 2 Numero = 3 Numero = 4 Numero = 5 Numero = 6 Numero = 7 Numero = 8 Numero = 9 Numero = 10 Ciclo terminado.drawRect(contador*20.class" width=350 height=105> </applet> </html> Los resultados son los siguientes: . 15 ). public class ContadorFor1 extends JApplet { public void paint( Graphics g ){ int contador. import java. import javax.JApplet. } } El siguiente es el código HTML para ejecutar el anetrior applet: <html> <applet code="ContadorFor1.70 la instrucción inmediatamente siguiente a la línea donde se encuentra la instrucción for.awt.

Programación Java básica: Instrucciones control de flujo: ciclos 7 . JOptionPane.71 Figura 39 Resultados applet ContadorFor1 Ejemplo 26: calcular la suma de los pares entre 2 y 200. import javax.exit( 0 ).swing. "La suma de los pares entre 2 y 200 es " + suma.showMessageDialog( null. System. public class SumaPares { public static void main( String args[] ) { int suma = 0. for ( int numero = 2. "Suma pares".JOptionPane. numero <= 100.JOptionPane. } } Y los resultados son: Figura 40 Resultados calse SumaPares .INFORMATION_MESSAGE ). numero += 2 ) suma += numero.

while(!(codigoMarca>= 1 && codigoMarca <=3)). String entrada. 10.contVehiculos ++){ 15. 12. switch(codigoMarca) { .showInputDialog("Digite un color de vehiculo:\n1 Rojo\n2 Blanco\n3 Azul").public static void main(String arg[]){ 5. codigoColor.parseInt(entrada).swing. while(!(codigoColor>= 1 && codigoColor <=3)).} 22.text. 21. 11. mazdaBlanco = 0. 23. entrada=JOptionPane.showInputDialog("Digite una marca de vehiculo:\n1 Renault\n2 Ford\n3 Mazda"). contAzul=0. fordAzul=0. contMazda=0. renaultRojo=0.public class CuentaCarros1{ 4. 17.parseInt(entrada).showInputDialog("Digite el número de vehiculos a leer:"). 3 Azul En este caso se utilizará el ciclo while para la repetición del ciclo de lectura de valores para cada vehículo y una instrucción switch anidada para llevar los acumulados según el color y la marca del vehículo leido. 6.} 18. contVehiculos=0.37). Para la marca del vehículo se tienen los siguientes códigos: 1 Renault. mazdaAzul =0. int codigoMarca. 2 Blanco. int contRojo=0. codigoMarca = Integer. 13. 3.*. fordBlanco=0. renaultBlanco=0. 3 Mazda Para el color del vehículo se tienen los siguientes códigos: 1 Rojo. 7. 9. JScrollPane scroller = new JScrollPane(areaDeSalida).parseInt(entrada). n = Integer. do{ 16. Escribir el total de vehículos según color y el total de vehículos según marca. int fordRojo=0. 2 Ford.*. 8. for(contVehiculos = 1. mazdaRojo=0. 2.import java.Programación Java básica: Instrucciones control de flujo: ciclos 7 . n. entrada=JOptionPane. A continuación el programa en Java: 1. JTextArea areaDeSalida = new JTextArea(10. do{ 20. contVehiculos <=n.72 Ejemplo 27: Desarrollar un programa Java que permita leer la información de N (N>1) vehículos correspondiente a marcaVehiculo (marca del vehículo) y colorVehiculo (color del vehículo) y calcular la distribución del número de vehículos según marca y color. 19. contFord=0.import javax. renaultAzul=0. contBlanco = 0. entrada=JOptionPane. int contRenault=0. codigoColor = Integer. 14.

67. 27. case 3: contAzul=contAzul+1. case 2: contBlanco=contBlanco+1. case 3: contAzul=contAzul+1. mazdaBlanco=mazdaBlanco+1. case 1: contRenault=contRenault+1. case 3: contAzul=contAzul+1. 59. switch(codigoColor) { case 1: contRojo=contRojo+1. 68. 69. 30. renaultAzul=renaultAzul+1. 53. 43. 34. break. case 2: contBlanco=contBlanco+1. renaultRojo=renaultRojo+1. break. 28. break. case 2: contFord=contFord+1. 49. 72. 35. 52. 47. 41. fordRojo=fordRojo+1. 51. switch(codigoColor) { case 1: contRojo=contRojo+1. 62. 29. break. break. fordBlanco=fordBlanco+1. 60.73 . 64. 48. 38. 58. 63. 45. } break. break. 44. 39. case 2: contBlanco=contBlanco+1. 37. } break. 26. 42. break. break. 50. 40. 57. 7 . 55. 36. renaultBlanco=renaultBlanco+1. 46. 61. case 3: contMazda=contMazda+1. 33. 25. 65. mazdaRojo=mazdaRojo+1. 54.Programación Java básica: Instrucciones control de flujo: ciclos 24. break. 56. 71. 31. 32. fordAzul=fordAzul+1. switch(codigoColor) { case 1: contRojo=contRojo+1. mazdaAzul=mazdaAzul+1. 66. 70.

} 76.JOptionPane.exit(0). "Encuesta".showMessageDialog(null. } 77.74 73. 75. 84. JOptionPane. areaDeSalida.INFORMATION_MESSAGE).} Figura 41 Resultados clase CuentaCarros Mas de una expresión en la inicialización e iteración del ciclo for Algunas veces es necesario incluir mas de una expresión en las partes de inicialización e iteración de los ciclos for. 83. renaultRojo+"\t"+renaultBlanco+"\t"+renaultAzul+"\t"+con tRenault+"\n"+ 80. "Mazda\t"+mazdaRojo+"\t"+mazdaBlanco+"\t"+mazdaAzul +"\t"+contMazda+"\n"+ 82. como puede ser ejemplificado en la aplicación siguiente: . System. "Total\t"+contRojo+"\t"+contBlanco+"\t"+contAzul+"\ t"+n+"\n"). "\tBlanco \tRojo \tAzul \t Total \n"+"Renault\t"+ 79.} 85.Programación Java básica: Instrucciones control de flujo: ciclos 7 . } 74. "Ford\t"+fordRojo+"\t"+fordBlanco+"\t"+fordAzul+"\t "+contFord+"\n"+ 81.append(" \tDistribucion de vehiculos segun marca y color\n\n"+ 78. break.scroller.

exit(0). que permite el manejo de excepciones se tratará mas adelante en la unidad de manejo de excepciones. La condición de terminación del ciclo es controlada por los valores que toman val1 y val2.areaDeSalida). while. return y throw.swing. las cuales obviamente se modifican en la parte de iteración. val1<=val2. El resultado después de su ejecución es el siguiente: Figura 42 Resultados clase MasDeUno Instrucciones para salto Java dispone de cuatro formas para transferir control de un lugar a otro del programa: break. junto con las . System.showMessageDialog(null. class MasDeUno{ public static void main(String args[]){ JTextArea areaDeSalida = new JTextArea(10. se utilizan en conexión con instrucciones de control de flujo como en el caso de switch.append(" val1= "+val1+ "\tval2= "+val2+"\n"). La instrucción return se tratará mas adelante en la unidad de métodos y la instrucción throw. que aunque no producen el desvío de flujo por sí mismas. continue.75 Aquí se están usando dos variables val1 y val2 en la parte de inicialización. Terminándose el ciclo cuando las dos variables sean iguales. val2. for(val1=1.Programación Java básica: Instrucciones control de flujo: ciclos Ejemplo 28: import javax.10). int val1. val2=15. ya vista antes. val1++.*. do-while y for. val2--) areaDeSalida. así como con el if-else. } } 7 . JOptionPane.

for ( contador = 1. JOptionPane. contador++ ) { if ( contador == 5 ) break. break Ya se ha visto la utilización de break en la instrucción switch para interrumpir la acción del case y darle control a la siguiente instrucción después de switch. De esta manera la instrucción break tiene tres usos: • Para terminar una secuencia de instrucciones en un switch.JOptionPane.swing.showMessageDialog( null. dándole control a la siguiente instrucción. al permitir saltar a otra parte del programa indicado con una etiqueta. • • Veamos su utilización en los siguientes ejemplos de ciclos: Ejemplo 29: import javax. salida ). } } Da el siguiente resultado: . La interrupción del ciclo o bloque que se esté desarrollando puede hacerse mediante la instrucción break con etiqueta. contador <= 10. Para salir desde el interior de un ciclo for. tal como se vió antes al tratar esta instrucción. int contador. public class ChequeoBreak { public static void main( String args[] ) { String salida = "Valores generados en el ciclo".Programación Java básica: Instrucciones para salto 7 . sin pasar por la condición de terminación. salida += contador + " ".exit( 0 ). También se la puede utilizar para interrumpir el bloque de código de un ciclo y salir de este. a fin de darle el control a otra parte del programa denominado con es etiqueta.76 instrucciones try. System. } salida += "\nInterrumpe el ciclo con contador = " + contador. Como una forma del tradicional goto de los viejos lenguajes de programación. continuando con la siguiente instrucción despues del ciclo donde se encuentre. catch y finally. do-while o while. y sin ejecutar el resto de instrucciones dentro del cuerpo del ciclo.

a la instrucción inmediatamente siguiente. El programa da como resultado los siguientes valores: Valor de i= Valor de i= Valor de i= Valor de i= Valor de i= Instrucción 0 1 2 3 4 despues del ciclo El mismo programa anterior pero utilizando en esta oportunidad la instrucción do-while: Ejemplo 31: 1. 6. 5. public static void main(String args[]){ 3.out.out.i++){ 4.} Cuando i tome el valor 5 en la línea 4. System. 4. indica que salte fuera del ciclo for.Programación Java básica: Instrucciones para salto 7 .class RompeDoWhile{ 2. public static void main(String args[]){ 3. int i = 1. 8. i<100. la instrucción break. 6. System.println(“Valor de i= “+i). System.77 Figura 43 Resultados clase ChequeoBreak Ejemplo 30: 1.println(“Instruccion despues del ciclo”). . do{ 5.println(“Valor de i= “+i).class RompeFor{ 2. } 9. if(i==5) break. for(int i=0.out. if(i==5) break. } 7.

} 13.out. La instrucción break sin etiqueta cuando se utiliza dentro de ciclos anidados.out. System.println(“Instruccion despues del Dando el mismo resultado que en el caso del ciclo for. } System.out.class RompeCicloInterno{ 2. 9. 8.Programación Java básica: Instrucciones para salto 7 .println(“Ciclos terminados”).} El cual dara los siguientes resultados: valor valor valor valor valor de de de de de i= i= i= i= i= 1 2 3 4 5 valor valor valor valor valor de de de de de j= 0 j = 0 j = 0 j = 0 j = 0 1 1 2 1 2 3 1 2 3 4 Obsérvese que. provocará la salida del ciclo mas interno. System. 8. public static void main(String args[]){ 3.println(). for(int i=1. la instrucción break en el ciclo interior. System. System. así sucesivamente hasta que se agota el ciclo externo con el valor de i igual a 5. como en el caso siguiente: Ejemplo 32: 1. } 11.println(“valor de i= ”+i+” valor de j= “).print(j+” “). incrementando el valor de i. } 11. i<=5. y entrando nuevamente al ciclo interno.78 7. for(int j=0. System.} 12. 5.out. hasta que se cumple nuevamente la condición de igualdad de i con j. i++.println() y continuando con el ciclo externo. .out. }while(i <100). 10. 9. dándole el control a la instrucción siguiente al ciclo interno. actúa cuando el valor de i es igual a j. 7. if(i==j)break. j++){ 6. ciclo”). i++){ 4.out.j<=10. 10. 12.

El bloque denominado con la etiqueta. dificultando su entendimiento y mantenimiento. Obviamente esta práctica no es la mas aconsejable y debe restringirse al máximo. puesto que salta directamente al lugar del programa que se desea continuar su ejecución. en donde etiqueta es el nombre de la etiqueta o identificador asociado con un bloque de código en otra parte del programa. } System. Esta forma no es la mas aconsejable puesto que daría lugar a los denominados programas “espagettis”. if(i==j)break. 7.j<=10. public static void main(String args[]){ 3.} Al ejecutarse da los siguientes resultados: valor valor valor valor valor aqui: de de de de de i= i= i= i= i= 1 2 3 4 5 valor valor valor valor valor de de de de de j j j j j = = = = = 0 0 1 0 1 2 0 1 2 3 Ciclos terminados con break . 9. la forma del break con etiqueta es una alternativa.println().class BreakConEtiqueta{ 2. i<=10. como se ilustra a continuación: Ejemplo 33: 1. 8. Por ejemplo. for(int j=0. que debe contener dentro de su cuerpo a la instrucción break con etiqueta.print(j+” “). if(i==5)break aqui. System. 10. se le asigna la etiqueta seguida de dos puntos. 11.out. para salir desde el ciclo mas interno de un conjunto de ciclos anidados. La forma general de la instrucción break con etiqueta es: break etiqueta. aquí: for(int i=1. 13.out. 5. } 12. System. i++){ 4. System. } 14.println(“Ciclos terminados con break aqui:”).out.Programación Java básica: Instrucciones para salto 7 .79 La ultima forma de la instrucción break tiene que ver con su utilización como equivalencia de un goto. El control se transfiere entonces a la siguiente instrucción o bloque después del bloque que contiene la etiqueta.print(“valor de i= ”+i+” valor de j= “).out. j++){ 6.

JOptionPane.80 Ejemplo 34: import javax. System. pare: { for ( int fila = 1. public class ChequeoBreakLabel{ public static void main( String args[] ) { String salida = "". } salida += "\n".exit( 0 )."Chequeo del break con etiqueta". fila++ ) { for ( int columna = 1. numero++. int numero=10. salida. } } Los resultados son los siguientes: Figura 44 Resultados de la clase ChequeoBreakLabel . } salida += "\nPor aqui nunca pasa".Programación Java básica: Instrucciones para salto 7 . columna <= 5 . } JOptionPane.swing.INFORMATION_MESSAGE ). fila <= 10. columna++ ) { if ( fila == 5 ) break pare.JOptionPane.showMessageDialog( null. salida += " "+numero.

contador <= 20.j<=4. } 9. System. if(!(j<=i))continue. En los tres casos.2) (3.out.} Al ser ejecutado dará el siguiente resultado: (1. Para el caso del ciclo for. } 11. contador++ ) { if ( contador == 7 || contador ==14) continue. el código después de la instrucción continue no se ejecuta.1) (4. no continuando con el resto del código del ciclo.Programación Java básica: Instrucciones para salto 7 . para verificar la condición de terminación.out.println(). j++){ 5. el control se transfiere primero a la parte de iteración y luego a la condición de terminación. i++){ 4.81 Instrucción continue A diferencia de la instrucción break que interrumpe la ejecución de un ciclo. 10. el control se transfiere desde la instrucción continue hasta despues del cuerpo del ciclo.2) (3. for(int i=1. i<=4. public class ChequeoContinue{ public static void main( String args[] ) { String salida = "".out.swing.3) (4. 6. 7.println("Ciclos terminados ").2) (4.1) (2. la instrucción continue permite interrumpir la iteración actual.3) (4.JOptionPane. for ( int contador = 1. En los ciclos while y do-while. 8.1) (2. for(int j=1.class UsoContinue{ 2. . pero continuando con la siguiente iteración del mismo ciclo.print("("+i+" . El siguiente ejemplo ilustra la utilización de esta instrucción: Ejemplo 35: 1. System. "+j+") "). }System.4) Ejemplo 36 : Desarrollar un programa que permita generar los bnumeros del 1 al 20 pero que salte el numero 7 y el 14 import javax.1) (3. public static void main(String args[]){ 3.

swing. aqui: for(int i=1. j++){ if(!(j<=i)){ salida+="\n".JOptionPane.salida ).j<=7. su forma general es: continue etiqueta.showMessageDialog(null. System. i<=7.82 salida += contador + " ". i++){ for(int j=1. JOptionPane. continue aqui.exit( 0 ).exit(0).showMessageDialog( null.} salida+="("+i+" . class ChequeoContinueEtiqueta{ public static void main(String args[]){ String salida="Uso del CONTINUE con etiqueta:\n". } } Los resultados son los siguientes: Figura 45 Resultados clase ChequeoContinue La instrucción continue tambien se puede utilizar con etiqueta para transferir el control a otra parte del programa. } } . "+j+") ".Programación Java básica: Instrucciones para salto 7 . System. } salida+= "\nEsto lo agrega al final". salida ). } JOptionPane. Ejemplo 37: import javax. } salida += "\nSe utiliza el CONTINUE para saltar los valores 7 y 14".

se permite el manejo de conjuntos de datos del mismo tipo.83 El resultado es el siguiente: Figura 46 Resultados de la clase ChequeoContinueEtiqueta Arreglos En Java como en los demás lenguajes de programación. 30. Arreglos uni-dimensionales Sea el caso de un arreglo unidimensional para representar el siguiente vector: A = (31. 28. 30. 31. . a los cuales se hace referencia mediante un mismo nombre o identificador. solo que se agrega un par de paréntesis [] para indicar que es un arreglo en su declaración de tipo. El nombre o identificador de los arreglos sigue las mismas reglas que para las variables sencillas. 30. 31. 31. Su definición en Java como arreglo se dará con la siguiente forma: int diasDeMeses[]. 31) que representa los días de cada uno de los meses del año (para un año no bisiesto). 31. Los arreglos son entonces agrupamientos de valores del mismo tipo de dato. 31. Es el caso de los denominados vectores o arreglos de una dimensión. matrices o arreglos de dos dimensiones y los de múltiples dimensiones.Programación Java básica: Instrucciones para salto 7 . 30.

DiasDeMeses[10]=31. salida+="Enero tiene "+DiasDeMeses[1]+" dias\n". DiasDeMeses[4]=30. JOptionPane. } } .84 Como sucede con la declaración de otras variables. el valor asignado por defecto al arreglo es cero.swing. salida+="Julio tiene "+DiasDeMeses[7]+" dias". DiasDeMeses[2]=28. En la siguiente clase se define el arreglo y se genera por la pantalla de comandos los valores para Enero y Julio: Ejemplo 38: import javax. DiasDeMeses[1]=31. Sin embargo. DiasDeMeses[3]=31. DiasDeMeses = new int[13]. public class DiasMeses{ public static void main(String args[]){ int DiasDeMeses[]. se debe utilizar en primer lugar el operador new. para darle valores.Programación Java básica: Arreglos 7 . para los arreglos existe un valor especial que se le asigna cuando no se han asignado valores a sus elementos. El tamaño del arreglo DiasDeMeses se define con la siguiente forma: diasDeMeses = new int[12]. Así el arreglo DiasDeMeses se refiere a 12 lugares de almacenamiento para albergar los días de los meses del año.*. se ha creado un objeto tipo int con la expresión anterior. DiasDeMeses[12]=31.showMessageDialog(null.salida). Estrictamente hablando. para asignar el tamaño del arreglo. DiasDeMeses[5]=31. DiasDeMeses[6]=30. DiasDeMeses[9]=30. de tal manera que. DiasDeMeses[11]=30. String salida="". DiasDeMeses[7]=31. es el valor null que representa que el arreglo no tiene valores aún asignados. DiasDeMeses[8]=31. Se pudo utilizar la siguiente expresión para definir la misma operación: int DiasDeMeses[] = new int[12]. en este caso debe tener espacio para albergar los doce valores correspondiente a los doce meses del año.

showMessageDialog(null. } } Obteniéndose en la pantalla los mismos resultados que el ejemplo anterior. salida += "Valores del arreglo n[ ]\nElemento \tvalor\n".. salida+="Julio tiene "+DiasDeMeses[7]+" dias". Ejemplo 40 : Desarrollar un programa que permita asignarle a un arreglo entero N los valores 10. i < n. 31}.length-i. 31.swing. 9. Una referencia a una posición fuera de los limites indicados en la definición del tamaño generará un error en tiempo de ejecución. 31.85 Al ejecutar este programa aparece en la pantalla: Figura 47 Resultados clase DiasMeses Una forma más simple de guardar los valores en el arreglo DiasDeMeses[] es mediante la siguiente estructura de clase: Ejemplo 39: import javax. int n[] = new int[ 10 ]. 30.. i++ ){ n[i]= n. 30. 31.salida). 30.. JOptionPane.length. import javax. 28. public class InicializaArreglo1 { public static void main( String args[] ) { String salida = "".*. int DiasDeMeses[]={31.Programación Java básica: Arreglos 7 . 30.swing. 31. 31. En Java. 8 . salida+="Enero tiene "+DiasDeMeses[1]+" dias\n".*. . el tamaño del arreglo se debe especificar. class DiasMeses2{ public static void main(String args[]){ String salida="". . for ( int i = 0.

swing. "Asigna valores a un arreglo entero".JOptionPane. areaSalida.86 salida += " "\n". 10 ). la suma de sus elementos.Programación Java básica: Arreglos 7 . areaSalida. y el numero de elementos mayores que el promedio.exit( 0 ). System.INFORMATION_MESSAGE ).setText( salida ). el promedio. } } n[ "+i+" ] = " + "\t" + n[ i ] + Al ejecutar el programa se obtienen los siguientes resultados: Figura 48 Resultados de la clase InicializaArreglo1 Ejemplo 41: Desarrolle un programa que permita leer N (n>0) elementos de un arreglo unidimensional de tipo entero y calcular. } JTextArea areaSalida = new JTextArea( 11. import javax. JOptionPane. JOptionPane. public class SumaArreglo1{ .showMessageDialog( null.

i++){ if(a[i]>prom)nMayores++. 15. 21. i <= n. 32.showMessageDialog(null.parseInt(entrada). } } Los resultados son los siguientes para la lectura de un arreglo con los siguientes valores: 12. 29. do{ entrada=JOptionPane.} while(n<=1 || n>100). for(int i = 1. n.showInputDialog("Digite el numero de términos:"). for(int i = 1. valor.parseInt(entrada). 45. 13. 61. 26: Figura 49 Lectura numero de términos . "El valor de la suma es " +suma+ "\nEl valor del promedio es "+prom+"\nElementos mayores que el promedio "+nMayores). i<= n.Programación Java básica: Arreglos 7 . 14. float prom. suma = suma +a[i]. String entrada. a[i] = Integer. } prom= suma/n. nMayores=0.showInputDialog("Digite valor para A["+i+"]:"). n = Integer.87 public static void main(String args[]){ int suma=0. int a[] = new int[100]. i++){ entrada=JOptionPane.} JOptionPane. 34.

import javax. 7. 9. 5. 2. 8. 1. i++){ for(int j=1. 5. 3. i <arregloA. 6.swing. public class FrecuenciaValores1{ public static void main( String args[] ) { int arregloA[] = { 1. String salida = "Valores del arreglo a[ ]\n\n". 8. 3. 4. 6. 6. int cont=0. 6. 5. for(int i = 0. 7. cont=cont+1. 3.88 Figura 50 Lectura de valores del arreglo Figura 51 Resultados de la clase SumaArreglo1 Ejemplo 42: Escriba un programa que permita calcular la frecuencia de valores que hay en un arreglo dado. 5}. 8. 8. 7. 6. 6.*. 6. 8. 8. 5. 7. 2. j<=5.j++){ salida +="a["+cont+"]= "+arregloA[cont]+" \t". 6. 5.Programación Java básica: Arreglos 7 . 8.} salida+="\n". 3.length/5. 2. } for ( int indice1 = 0. 6. salida += "\nResultado del calculo de la . 6. indice1++ ) ++frecuencia[ arregloA[ indice1 ] ]. 9. 1. 8. 3. 7.indice1 < arregloA. 5. 4. int frecuencia[] = new int[ 10 ]. 8. 4.length. 7. 9. 6.

setText( salida ).89 frecuencia\nvalor \tfrecuencia\n\n".showMessageDialog( null.indice2 < frecuencia. indice2++ ) salida += indice2 + "\t" + frecuencia[ indice2 ] + "\n".INFORMATION_MESSAGE ).length. JOptionPane. for ( int indice2 = 1.exit( 0 ). JTextArea areaSalida = new JTextArea( 11. "Calculo de frecuencias". 10 ). areaSalida. areaSalida.Programación Java básica: Arreglos 7 . } } . System. JOptionPane.

15. 19. String output = "". import javax. for ( int i = 0. i++ ) { output += "\n" + i + "\t" + n[ i ] + "\t". 5.90 Figura 52 Resultados clase FrecuenciaValores Ejemplo 43: Desarrollar un programa que dados los valores de un arreglo unidimensional. 7. 7. 9. 18. i < n.Programación Java básica: Arreglos 7 . output += "Elemento\tValor\tHistograma". permita dibujar el histograma correspondiente a los valores del arreglo.*. 10.swing. 2 }.length. . public class CalculaHistograma1 { public static void main( String args[] ) { int n[] = { 12.

} JTextArea outputArea = new JTextArea( 11. es decir de 5 filas por cuatro columnas.INFORMATION_MESSAGE ). Para declarar una variable del tipo arreglo multidimensional.91 for ( int j = 1. se requiere especificar cada índice adicional utilizando una pareja de corchetes [ ]. outputArea. } } El resultado es el siguiente: Figura 53 Resultados clase CalculaHistograma Arreglos bi-dimensionales En Java los arreglos de más de una dimensión. j <= n[ i ]. "Dibujo de un histograma".setText( output ). outputArea.exit( 0 ).Programación Java básica: Arreglos 7 . tendremos la siguiente codificación: int MatBidi[][]= new int[3][4]. j++ ) output += "*". JOptionPane. JOptionPane. son en realidad matrices de matrices. System. Por ejemplo. .showMessageDialog( null. o multidimensionales. 30 ). para definir un arreglo o matriz de dos dimensiones de tamaño 5x4.

System. i++) for (j=0. matriz[0][1]= 2.*. class SumaArregloBi{ public static void main(String args[]){ int matriz[][] = new int[3][3]. for (i=0.swing. } } El resultado del programa es el siguiente: . suma = 0.j++) suma = suma + matriz[i][j].exit(0). Su representación es de la siguiente manera: Columna 0 Fila 0 Fila 1 Fila 2 MatBidi[0][0] MatBidi[1][0] MatBidi[2][0] Columna 1 Columna 2 Columna 3 MatBidi[0][3] MatBidi[1][3] MatBidi[2][3] MatBidi[0][1] MatBidi[0][2] MatBidi[1][1] MatBidi[1][2] MatBidi[2][1] MatBidi[2][2] Los índices del lado izquierdo representan las filas y los índices del lado derecho representan las columnas del arreglo MatBidi[][] declarado en la instrucción anterior. matriz[2][0]= 7. j. con lo cual debe tenerse cuidado al manejar los arreglos. matriz[0][2]= 3. matriz[2][1]= 8. matriz[1][1]= 5. matriz[2][2]= 9.92 Con este código se establecen 3 por 4 posiciones que se asignan a la variable MarizBidimencional que es de tipo entero. JOptionPane. i<=2. matriz[1][0]= 4.showMessageDialog(null.j<=2. Obsérvese que los subindices empiezan desde [0][0]. El siguiente ejemplo toma los elementos de una matriz de tamaño 3 por 3 y calcula la suma de todos sus elementos: Ejemplo 44: import javax. int i. matriz[1][2]= 6. matriz[0][0]= 1.Programación Java básica: Arreglos 7 ."La suma de los elementos es "+suma).

suma = suma + matriz[i][j].j++){ entrada= JOptionPane.swing.exit(0). i++) for (j=0.j<=2.showInputDialog("Digite el término [ "+i+" ][ "+j+" ]"). for (i=0. suma = 0. . int i. class SumaArregloBi1{ public static void main(String args[]){ int matriz[][] = new int[3][3]. j. Ejemplo 45: import javax. System.} JOptionPane.showMessageDialog(null.Programación Java básica: Arreglos 7 .93 Figura 54 Resultados clase SumaArregloBi Ahora el mismo programa anterior pero esta vez leyendo los valores para el arreglo. matriz[i][j]=Integer. i<=2.*. } } El resultado obtenido en la pantalla de comandos una vez se introduzacan los valores para el arreglo como en el caso siguiente para el elemento [2][1]."La suma de los elementos es "+suma).parseInt(entrada). String entrada.

Programación Java básica: Arreglos 7 . 4 tanto para las filas como para las columnas. La siguiente tabla ilustra la distribución de los elementos del arreglo tabla[5][5]. Se tendrán en cuenta los indices 1. tabla[1][3]. Las marcas y los colores a tener en cuenta con sus respectivos códigos son: Marca: 1 Renault. 3 Azul.94 Figura 55 Lectura de datos clase SumaArregloBi1 Se obtendrán los mismos resultados que en el caso anterior: Figura 56 Resultados clase SumaArregloBi1 Ejemplo 46: El siguiente ejemplo corresponde a una aplicación que permite calcular el numero de vehículos que de un conjunto de datos según marca y color. 3. en donde por ejemplo. Por facilidad y entendimiento del problema y su solución. 2. no se tendrá en cuenta los indices de la fila 0 y la columna 0. así como de cual color hay más vehículos. 2 Blanco. Se creará un arreglo tabla[5][5] de tipo entero de cinco filas por cinco columnas. es el número de vehículos marca Renault que tienen el color blanco: . Así mismo indica cuál es la marca con el mayor húmero de vehículos. 2 Ford. 3 Mazda. Color: 1 Rojo.

contVehiculos <=n.*.text. codigoColor. JTextArea areaDeSalida = new JTextArea(10. al cual hay que suministrarle los datos según los vaya solicitando: import javax.showInputDialog("Digite un color de vehiculo:\n1 Rojo\n2 Blanco\n3 Azul").swing.contVehiculos ++){ do{ entrada=JOptionPane. } areaDeSalida. public class CuentaCarros2{ public static void main(String arg[]){ String entrada.showInputDialog("Digite una marca de vehiculo:\n1 Renault\n2 Ford\n3 Mazda").95 Color Rojo Renault Ford Mazda tabla[1][1] tabla[2][1] tabla[3][1] Color Blanco tabla[1][2] tabla[2][2] tabla[3][2] tabla[4][2] Color Azul tabla[1][3] tabla[2][3] tabla[3][3] tabla[4][3] Total Vehiculos tabla[1][4] tabla[2][4] tabla[3][4] tabla[4][4] Total Color tabla[4][1] El siguiente listado es el programa tipo aplicación escrito en Java.showInputDialog("Digite el número de vehiculos a leer:").} while(!(codigoMarca>= 1 && codigoMarca <=3)).parseInt(entrada).37). do{ entrada=JOptionPane. tabla[codigoMarca][4]++.parseInt(entrada).append(" \tDistribucion de vehiculos segun marca y color\n\n"+ "\tBlanco \tRojo \tAzul \t Total \n"+"Renault\t"+ tabla[1][1]+"\t"+tabla[1][2]+"\t"+tabla[1][3] +"\t"+tabla[1][4]+"\n"+ "Ford\t"+tabla[2][1]+"\t"+tabla[2][2]+"\t"+tabla[2][3] +"\t"+tabla[2][4]+"\n"+ "Mazda\t"+tabla[3][1]+"\t"+tabla[3][2]+"\t"+tabla[3] . for(contVehiculos = 1. tabla[4][4]++. int tabla[][] = new int[5][5].*.Programación Java básica: Arreglos 7 . entrada=JOptionPane. int codigoMarca.parseInt(entrada). tabla[4][codigoColor]++. contVehiculos=0. n.} while(!(codigoColor>= 1 && codigoColor <=3)). tabla[codigoMarca][codigoColor]++. import java. codigoMarca = Integer. n = Integer. codigoColor = Integer.

96 [3]+"\t"+tabla[3][4]+"\n"+ "Total\t"+tabla[4][1]+"\t"+tabla[4][2]+"\t"+tabla[4] [3]+"\t"+tabla[4][4]+"\n").exit(0).} } Un resultado de la ejecución del programa con los datos suministrados para 20 vehículos cuyos datos son leídos de acuerdo a las siguientes entradas: Figura 57 Lectura número de vehículos Figura 58 Lectura de la marca de un vehículo .areaDeSalida.JOptionPane. System.showMessageDialog(null.INFORMATION_MESSAGE). "Encuesta".Programación Java básica: Arreglos 7 . JOptionPane.

class MultiplicaMatriz{ public static void main(String valores[]){ int c[][] = new int[10][10]. .Programación Java básica: Arreglos 7 . Ejemplo 47: Desarrollar un programa tipo aplicación en Java que permita leer dos matrices generales de tipo entero y efectuar su producto. la siguiente forma lo declara y establece su tamaño: int TresDimensiones[][][]= new int[3][4][5]. import javax.*.swing. int b[][] = new int[10][10]. de tamaño 3x4x5.97 Figura 59 Lectura del color de un vehículo Figura 60 Resultadosde la clase CuentaCarros2 Para el caso de un arreglo de tres dimensiones. int a[][] = new int[10][10].

areaSalida.showInputDialog("Digite el numero de filas de la matriz A ").append("\n"). JTextArea areaSalida = new JTextArea(20.append(" "+c[i][j]+"\t").Programación Java básica: Arreglos 7 .areaSalida. entrada= JOptionPane. j<=columnasB.append("\n Datos matriz a \n"). }areaSalida. areaSalida. columnasB.30). filasB = Integer.parseInt(entrada). filasA = Integer. } areaSalida. j . filasB.i++){ for(j =1.showInputDialog("Digite el numero de columnas de la matriz B "). columnasA = Integer.append("\nResultado del producto \n").parseInt(entrada). j++){ entrada= JOptionPane.INFORMATION_MESSAGE). } } . entrada= JOptionPane. j++){ entrada= JOptionPane. do{ entrada= JOptionPane.showMessageDialog(null. int i. i<=filasA. for(i = 1. columnasB = Integer. i<=filasB.showInputDialog("Digite el numero de filas de la matriz B "). for(i=1.k. areaSalida.parseInt(entrada). j<=columnasB. b[i][j]= Integer. i<=filasA. System. entrada= JOptionPane. } JOptionPane. columnasA. areaSalida. j++){ c[i][j]=0.append("\n").append(" "+b[i][j]+"\t").append(" " +a[i][j]+"\t"). a[i][j]= Integer. i++){ for(j=1. k<=columnasA.append("\n"). "Producto Matrices". j<=columnasA.parseInt(entrada). } areaSalida.showInputDialog("Digite el termino b["+i+"]["+j+"]= ").parseInt(entrada).JOptionPane.} areaSalida. filasA. for(i=1.showInputDialog("Digite el termino a["+i+"]["+j+"]= ").append("\n Datos matriz b \n"). for (k=1. k++) c[i][j]=c[i][j]+ a[i][k]*b[k][j].showInputDialog("Digite el numero de columnas de la matriz A ").exit(0).98 String entrada. }areaSalida.parseInt(entrada). i++){ for(j=1.} while(columnasA != filasB).

indicando cómo el programa al ser un objeto. tiene-un y utiliza-un entre clases. así como las normas de codificación.99 Al ejecutar el programa y suministrando los datos para dos matrices se obtienen los siguientes resultados: Figura 61 Resultados de la clase MultiplicaMatriz Recapitulación Se ha presentado el paso del modelo de objetos a la programación en Java. Se definieron los tipos de datos primitivos y se establecieron sus características desde el punto de vista de su tamaño y la forma de manipulación de sus valores. Se presentaron los componentes de un programa en Java. Se vio a través de ejemplos cómo las relaciones de es-un.Programación Java básica: Arreglos 7 . . se pueden convertir a códigos en Java. se estableció la forma de definir identificadores. se forma en su estructura de las mismas partes de una clase.

lógicos.Programación Java básica: Recapitulación 7 .100 El tratamiento de arreglos tanto unidimensionales como bidimensionales se presentó acompañado de los respectivos ejemplos. Estas instrucciones le permiten programar la solución de prácticamente cualquier problema en el computador. Se presentaron los operadores aritméticos. Se ha presentado las instrucciones que le permiten controlar el flujo de la ejecución de un programa en Java. . relacionales y de manejo de caracteres.

Sign up to vote on this title
UsefulNot useful