0 evaluări0% au considerat acest document util (0 voturi)
56 vizualizări39 pagini
Este documento presenta una introducción al lenguaje de programación Java. Explica cómo crear proyectos e insertar archivos Java en NetBeans, el entorno de desarrollo integrado. Incluye ejemplos de programas básicos como "Hola Mundo" y muestra cómo usar sentencias para imprimir texto e ingresar datos desde el teclado. El documento también resume los principales tipos de datos en Java y las sentencias para leer datos según su tipo.
Este documento presenta una introducción al lenguaje de programación Java. Explica cómo crear proyectos e insertar archivos Java en NetBeans, el entorno de desarrollo integrado. Incluye ejemplos de programas básicos como "Hola Mundo" y muestra cómo usar sentencias para imprimir texto e ingresar datos desde el teclado. El documento también resume los principales tipos de datos en Java y las sentencias para leer datos según su tipo.
Este documento presenta una introducción al lenguaje de programación Java. Explica cómo crear proyectos e insertar archivos Java en NetBeans, el entorno de desarrollo integrado. Incluye ejemplos de programas básicos como "Hola Mundo" y muestra cómo usar sentencias para imprimir texto e ingresar datos desde el teclado. El documento también resume los principales tipos de datos en Java y las sentencias para leer datos según su tipo.
1 Curso de Java Bsico Primera parte Por Antonio Poma Aprenda el ltimo y ms novedoso Lenguaje de programacin, de una forma fcil y sencilla con este manual que Cibertronic pone a su disposicin. Java Parte I Jr. Ayacucho 263 -Huancayo Telf: 201461 2 CONTENIDO PROGAMA NETBEANS I.- LOS PRIMEROS PASOS 1). Iniciando el Programa 2). La interface Inicial del Programa 3). Creando un proyecto e insertando un archivo Java 4). EL PROGRAMA Hola mundo: 5). Creando otro programa en el proyecto II.- INGRESO DE DATOS DESDE EL TECLADO Tipos de datos III.- SENTENCIAS PARA INGRESAR DATOS SEGN SU TIPO IV.- OPERADORES ARITMTICOS VI.- Operaciones matemticas: Clase Math a) Funciones derivadas b) Programa para generar un numero aleatorio entre 1 y 6: c) Programa que ilustra la clase Math VII.- LA CLASE Character a) Declaraciones b) Comprobaciones booleanas: c) Traslaciones de caracteres d) Traslaciones de carcter/dgito e) Mtodos de la clase Character f) Programa para ilustrar la clase carcter: VII.- LA CLASE Float a) Declaraciones b) Valores de Float c) Conversiones de Clase/Cadena d) Comprobaciones e) Conversiones de Objetos f) Otros Mtodos VIII.- LA CLASE Double a) Declaraciones b) Valores de Double c) Mtodos de Double IX.- LA CLASE Integer a) Declaraciones b) Valores de Integer c) Mtodos de Integer Java Parte I Jr. Ayacucho 263 -Huancayo Telf: 201461 3 X.- LA CLASE Long a) Declaraciones b) Valores de Long c) Mtodos de Long XI.- LA CLASE Boolean a) Declaraciones b) Valores de Boolean c) Mtodos de Boolean XII.- LA CLASE String a) Funciones Bsicas b) Funciones de Comparacin de Strings c) Funciones de Comparacin de Subcadenas d) Funciones ValueOf XII.- LA CLASE StringBuffer a) Cambio de Tamao b) Modificacin del Contenido c) Operadores de Concatenacin XIII.- CONTROL DE FLUJO a) Sentencias de Salto if/else switch b) Sentencias de Bucle Bucles for Bucles while Bucles do/while Control General del Flujo XIV.- EJEMPLOS DE PROGRAMAS UTILIZANDO CONTROL DE FLUJO a) Programa para crear la tabla de multiplicar de un nmero b) Programa para determinar si un nmero es primo o no c) Programa que imprime una serie de n nmeros primos d) Programa que imprime los pares menores a un nmero e) Programa que dibuja un rbol de asteriscos f) Programa a para convertir un numero decimal a binario Duke, la mascota de java Java Parte I Jr. Ayacucho 263 -Huancayo Telf: 201461 4 PROGAMA NETBEANS Este programa constituye un ENTORNO INTEGRADO DE DESARROLLO (IDE), es decir nos permite escribir, editar y probar nuestros programas desde un mismo lugar, Un programa JAVA se puede realizar desde cualquier editor de textos (bloc de notas por ejm.) pero compilarlo y ejecutarlo nos dara mucho ms trabajo y requerira de conocimientos sobre la lnea de comando de JAVA. I.- LOS PRIMEROS PASOS 1). Iniciando el Programa En las lista de programas buscar el grupo de programas NetBeans 5.5; si no est instalado el programa en su mquina deber instalarlo, pera esto pude descargarlo de la pgina del autor, tambin tendr que descargar e instalar la maquina virtual JAVA. Java Parte I Jr. Ayacucho 263 -Huancayo Telf: 201461 5 2). La interface Inicial del Programa 3). Creando un proyecto e insertando un archivo Java Lo primero que haremos ser un proyecto que contendr nuestros programas a) En el men File iniciamos New Project b) La categora de nuestro proyecto ser del tipo General: Java Application Java Parte I Jr. Ayacucho 263 -Huancayo Telf: 201461 6 c) Procedemos a dar un nombre a nuestro proyecto: Proyectos Basico d) Seleccionamos una carpeta donde guardaremos todos los praganas que realicemos en el proyecto. e) Luego de dar un clic sobre finish ya tendremos nuestro proyecto listo para iniciar la escritura de los programas Java Parte I Jr. Ayacucho 263 -Huancayo Telf: 201461 7 f) Seguidamente crearemos un nuevo archivo para escribir nuestro programa g) Los primeros programas que realizaremos los haremos como clases(Categories: Java Classes) h) El nuevo archivo que insertaremos en nuestro proyecto ser un archivo java vacio(Empty Java File) i) luego procedemos ha darle un nombre a nuestro programa(Class name) para nuestro caso llamemos prog1 Java Parte I Jr. Ayacucho 263 -Huancayo Telf: 201461 8 j) En hora buena, ya hemos creado un proyecto y un archivo java vaco, ahora solo tendremos que escribir nuestro programa. 4). EL PROGRAMA Hola mundo: a) En el editor de programas escribir: import java.io.*; public class prog1 { public static void main(String[] args) { System.out.println(" HOLA MUNDO "); } } b) Siempre que deseemos probar un programa deberemos compilarlo O simplemente presionar la tecla F9 Java Parte I Jr. Ayacucho 263 -Huancayo Telf: 201461 9 c) En la ventana output, veremos los resultados del proceso de compilacin al que hemos sometido a nuestro programa. d) Una vez compilado ya podemos probar el programa para esto ejecutamos (run) el prog1: O simplemente presionamos las teclas Maysculas + F6 e) Y as en la ventana OUTPUT tendremos la salida de nuestro programa: Java Parte I Jr. Ayacucho 263 -Huancayo Telf: 201461 10 f) El porqu de cada lnea import java.io.*; Para poder acceder a determinados procedimientos con los dispositivos de la computadora, como en nuestro caso a la pantalla (Consola), debemos de utilizar las Clases que estn programadas para tal motivo, mediante la sentenciaimport. public class prog1 Declaramos nuestro programa como una clase, aqu debemos utilizar el mismo nombre del archivo que hemos guardado, para no tener problemas al compilar public static void main(String[] args) Luego declaramos el mtodo para nuestra clase, para esta parte del curso siempre usaremos un mtodo main como se muestra que ser el principal, al ejecutar el programa el mtodo main es el primero en ejecutarse System.out.println(" HOLA MUNDO "); En la lnea 7, se encuentra la sentencia que realiza el trabajo por as decirlo, aqu se indica imprimir una lnea de texto (print - line) en el canal de salida por defecto (la pantalla). { } Las llaves en este caso nos permite indicar el inicio o el final de un a clase o mtodo Antes de continuar, asegrese de haber comprendido bien los puntos tratados, el programa puesto de ejemplo, lo debe de haber resuelto satisfactoriamentede no ser as, busque apoyo inmediatamente Java Parte I Jr. Ayacucho 263 -Huancayo Telf: 201461 11 5). Creando otro programa en el proyecto a) No es necesario crear otro proyecto para crear otro programa bastara aadir un nuevo archivo al proyecto b) Aadiremos una clase en un archivo Java vacio c) Llamaremos a la clase prog2 Java Parte I Jr. Ayacucho 263 -Huancayo Telf: 201461 12 d) Observe la ventana Projects, vera que ya existen dos programas prog1 y prog2 e) Escribimos el siguiente programa import java.*; public class prog2 { public static void main(String[] args) { System.out.println("\n"); System.out.println(" ******************** "); System.out.println(" ** PROGRAMANDO ** "); System.out.println(" ** EN JAVA ** "); System.out.println(" ******************** "); System.out.println("\n"); } } f) Luego compilamosF9 y ejecutamosMaysculas + F6 Java Parte I Jr. Ayacucho 263 -Huancayo Telf: 201461 13 Sentencia: System.out.println( Cadena de texto ); Utilizamos este mtodo de la clase java permite imprimir en la pantalla una cadena de texto. \n Representa un salto de linea, es decir un 8 , lo cual origina una lnea en blanco en nuestro programa II.- INGRESO DE DATOS DESDE EL TECLADO a) Creamos otro programa prog3 y escribimos import java.io.*; public class prog3 { public static void main(String[] args) throws IOException { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader e = new BufferedReader(isr); int a,b; System.out.println("\n"); System.out.println("*********************** "); System.out.println("** MINICALCULADORA ** "); System.out.println("*********************** "); System.out.println("Ingrese dos nmeros enteros: "); a=Integer.parseInt(e.readLine()); b=Integer.parseInt(e.readLine()); System.out.println(" ,,w,, "); System.out.println(" @ 0 0 @ "); System.out.println("+-------oOO--(_)--OOo-------+ "); System.out.println(" La suma es = " + (a+b)); System.out.println(" La resta es = " + (a-b)); System.out.println(" La Multip. es = " + (a*b)); System.out.println(" La Divicion es = " + (a/b)); System.out.println("+---------------------------+ "); System.out.println("\n"); } } b) Compilar F9 y ejecutar maysculas + F6 Java Parte I Jr. Ayacucho 263 -Huancayo Telf: 201461 14 c) Nuevas sentencias Utilizar siempre estas sentencias para declarar el flujo de entrada para la variable e Debido a que guardaremos los valores ledos desde el teclado en variables ser necesario declararlas en este caso del tipo entero Para leer y guardas los datos desde el teclado usaremos las siguientes sentencias Como se puede observar para el caso de la divisin el resultado es 1, esto porque tanto a y b fueron declarados como enteros y por lo tanto el programa realiza una divisin entera. En java tenemos los siguientes tipos de datos: Enteros Int 4 2147483648 Short 2 32768 Long 8 9223372036854775808 Byte 1 128 a 127 Reales Float 4 + 3.40282347E+38 Double 8 + 179769313486231570E+308 Carcter Char Cadena de caracteres String Lgicos True/False Java Parte I Jr. Ayacucho 263 -Huancayo Telf: 201461 15 III.- SENTENCIAS PARA INGRESAR DATOS SEGN SU TIPO: a = Byte.parseByte ( e.readln() ) byte a b = Short.parseShort ( e.readln() ) short b c = Integer.parseInt ( e.readln() ) int c d = Long.parseLong ( e.readln() ) long d e = Float.parseFloat ( e.readln() ) float e f = Double.parseDouble ( e.readln() ) double f g = e.readln() String g h= (char)System.in.read(); char h IV.- OPERADORES ARITMTICOS + suma - resta * multiplicacin / divisin ++ aumentar en uno - - disminuir en uno % resto (residuo de la divisin entera). a) Programa que realiza las operaciones aritmeticas con nmeros doubl import java.io.*; public class prog4 { public static void main(String[] args) throws IOException { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader e = new BufferedReader(isr); double a,b; System.out.println("\n"); System.out.println("*********************** "); System.out.println("** OPERADORES ** "); System.out.println("*********************** "); System.out.println("Ingrese dos nmeros con decimales:"); a= Double.parseDouble (e.readLine()); b= Double.parseDouble (e.readLine()); System.out.println(" ,,w,, "); System.out.println(" @ 0 0 @ "); System.out.println("+-------oOO--(_)--OOo-------+ "); System.out.println(" La suma es = " + (a+b)); System.out.println(" La resta es = " + (a-b)); System.out.println(" La Multip. es = " + (a*b)); System.out.println(" La Divicion es = " + (a/b)); System.out.println(" a++: + a + ++ = + a++); System.out.println(" Suma de a+b = + (a/b)); System.out.println("+---------------------------+ "); } Java Parte I Jr. Ayacucho 263 -Huancayo Telf: 201461 16 Observamos que la primera suma a+b es 3.5 y luego en la siguiente suma a+b es 4.5, esto debido a que hemos aplicado a++: esto hace que ha sea igual a 3 VI.- Operaciones matemticas: Clase Math La claseMath nos permite realizar operaciones matemticas, El constructor de la clase es privado, por los que no se pueden crear instancias de la clase. Sin embargo, Math es public para que se pueda llamar desde cualquier sitio y static para que no haya necesidad de importarla(import) Java Parte I Jr. Ayacucho 263 -Huancayo Telf: 201461 17 Entre lasfunciones mas utilizadas podemos citar: Math.abs(a): Valor absoluto Math.sin(a): Seno Math.cos(a): Coseno Math.tan(a): Tangente Math.asin(a): Arcoseno Math.acos(a): Arcocoseno Math.atan(a): Arcotangente Math.tan2(a,b): Arco tangente de dos nmeros a/b Math.exp(a): e elevado a un nmero Math.log(a): Logaritmo Math.sqrt(a): Raz cuadrada Math.ceil(a): Nmero completo menor Math.floor(a): Numero completo mayor Math.rint(a): Parte entera Math.pow(a,b): Un nmero elevado a otro nmero Math.round(a): Redondear ha entero Math.random( ): Genera un numero al azar entre 0 y 1 Math.max(a,b): El mayor de 2 nmeros Math.min(a,b): El menor de 2 nmeros Math.Pl : 3.1416 Math.E : 2.72 d) Funciones derivadas Algunas otras funciones se consiguen operando las funciones anteriores, como se muestra en el cuadro siguiente: Java Parte I Jr. Ayacucho 263 -Huancayo Telf: 201461 18 e) Programa para generar un numero aleatorio entre 1 y 6: import java.io.*; public class prog5 { public static void main(String[] args) { double max=6,min=1,n; System.out.println("\n"); System.out.println("*********************** "); System.out.println("** numeros al azar ** "); n=Math.rint((max-min)* Math.random() + min); System.out.println("** " + n + " **"); n=Math.rint((max-min)* Math.random() + min); System.out.println("** " + n + " **"); n=Math.rint((max-min)* Math.random() + min); System.out.println("** " + n + " **"); n=Math.rint((max-min)* Math.random() + min); System.out.println("** " + n + " **"); n=Math.rint((max-min)* Math.random() + min); System.out.println("** " + n + " **"); System.out.println("*********************** "); }} v Todo Angulo deber estar en radianes v Nmero al azar entre dos nmeros: N= Math.rint((lmitesup - lmiteinf ) * math.random() + lmiteinf) Java Parte I Jr. Ayacucho 263 -Huancayo Telf: 201461 19 f) Programa que ilustra la clase Math public class prog6 { public static void main( String args[] ) { int x; double rand,y,z; float max; rand = Math.random(); x = Math.abs( -123 ); y = Math.round( 123.567 ); z = Math.pow( 2,4 ); max = Math.max( (float)1e10,(float)3e9 ); System.out.println( rand ); System.out.println( x ); System.out.println( y ); System.out.println( z ); System.out.println( max ); } } VII.- LA CLASE Character g) Declaraciones La primera sentencia crear una variable carcter y la segunda un objeto Character: char c; Character C; h) Comprobaciones booleanas: Character.isLowerCase( c ) Character.isUpperCase( c ) Character.isDigit( c ) Character.isSpace( c ) Antonio Poma Jr. Ayacucho 263 Huancayo telfono: 201461 20 En este caso, si tuvisemos un objeto Character C, no se podra hacer C.isLowerCase, porque no se ha hecho unnew de Character. Estas funciones son estticas y no conocen al objeto, por eso hay que crealo antes. i) Traslaciones de caracteres char c2 = Character.toLowerCase( c ); char c2 = Character.toUpperCase( c ); j) Traslaciones de carcter/dgito int i = Character.digit( c,base ); char c = Character.forDigit( i,base ); k) Mtodos de la clase Character C = new Character( 'J' ); char c = C.charValue(); String s = C.toString(); l) Programa para ilustrar la clase carcter: import java.io.*; public class prog7 { public static void main(String[] args) throws IOException { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader e = new BufferedReader(isr); char op,c1,c2; Character C; System.out.println ("************************"); System.out.println ("** Clase Character **\n"); System.out.print("ingrese un caracter: "); op= (char)System.in.read(); System.out.println ("Es mayuscula? " + Character.isLowerCase(op)); System.out.println ("Es minuscula? " + Character.isUpperCase(op)); c1 = Character.toLowerCase( op ); c2 = Character.toUpperCase( op ); System.out.println ("en minuscula: " + c1); Antonio Poma Jr. Ayacucho 263 Huancayo telfono: 201461 21 System.out.println ("en mayuscula: " + c2); int i = Character.digit( op,16 ); System.out.println ("en dec. (A-F): " + i); C = new Character( op ); System.out.println ("como objeto: " + C); // escribir C. para ver las fx asociadas a este objeto... } } VII.- LA CLASE Float Cada tipo numrico tiene su propia clase de objetos. As el tipofloat tiene el objeto Float. De la misma forma que con la clase Character, se han codificado muchas funciones tiles dentro de los mtodos de la claseFloat. g) Declaraciones:La primera sentencia crear una variable float y la segunda un objeto Float: float f; Float F; h) Valores de Float Float.POSITIVE_INFINITY Float.NEGATIVE_INFINITY Float.NaN Float.MAX_VALUE Float.MIN_VALUE i) Conversiones de Clase/Cadena Antonio Poma Jr. Ayacucho 263 Huancayo telfono: 201461 22 String s = Float.toString( f ); f = Float.valueOf( "3.14" ); j) Comprobaciones boolean b = Float.isNaN( f ); boolean b = Float.isInfinite( f ); La funcinisNaN() comprueba si f es unNo-Nmero. Un ejemplo de no-nmero es raiz cuadrada de -2. k) Conversiones de Objetos Float F = new Float( Float.PI ); String s = F.toString(); int i = F.intValue(); long l = F.longValue(); float F = F.floatValue(); double d = F.doubleValue(); l) Otros Mtodos int i = F.hashCode(); boolean b = F.equals( Object obj ); int i = Float.floatToIntBits( f ); float f = Float.intBitsToFloat( i ); VIII.- LA CLASE Double d) Declaraciones: La primera sentencia crear una variable double y la segunda un objeto Double: double d; Double D; e) Valores de Double Double.POSITIVE_INFINITY Double.NEGATIVE_INFINITY Antonio Poma Jr. Ayacucho 263 Huancayo telfono: 201461 23 Double.NaN Double.MAX_VALUE Double.MIN_VALUE c) Mtodos de Double D.isNaN(); Double.isNaN( d ); D.isInfinite(); Double.isInfinite( d ); boolean D.equals(); String D.toString(); int D.intValue(); long D.longValue(); float D.floatValue(); double D.doubleValue(); int i = D.hashCode(); Double V.valueOf( String s ); long l = Double.doubleToLongBits( d ); double d = Double.longBitsToDouble( l ); IX.- LA CLASE Integer d) Declaraciones La primera sentencia crear una variable int y la segunda un objeto Integer: int i; Integer I; e) Valores de Integer Integer.MIN_VALUE; Integer.MAX_VALUE; f) Mtodos de Integer String Integer.toString( int i,int base ); String Integer.toString( int i ); int I.parseInt( String s,int base ); int I.parseInt( String s ); Integer Integer.valueOf( String s,int base ); Integer Integer.valueOf( String s ); Antonio Poma Jr. Ayacucho 263 Huancayo telfono: 201461 24 int I.intValue(); long I.longValue(); float I.floatValue(); double I.doubleValue(); String I.toString(); int I.hashCode(); boolean I.equals( Object obj ); En los mtodostoString(), parseInt() yvalueOf() que no se especifica labase sobre la que se trabaja, se asume que esbase 10. X.- LA CLASE Long d) Declaraciones La primera sentencia crear una variable long y la segunda un objeto Long: long l; Long L; e) Valores de Long Long.MIN_VALUE; Long.MAX_VALUE; f) Mtodos de Long String Long.toString( long l,int base ); String Long.toString( long l ); long L.parseLong( String s,int base ); long L.parseLong( String s ); Long Long.valueOf( String s,int base ); Long Long.valueOf( String s ); int L.intValue(); long L.longValue(); float L.floatValue(); double L.doubleValue(); String L.toString(); int L.hashCode(); boolean L.equals( Object obj ); En los mtodostoString(), parseInt() yvalueOf() que no se especifica labase sobre la que se trabaja, se asume que esbase 10. XI.- LA CLASE Boolean Antonio Poma Jr. Ayacucho 263 Huancayo telfono: 201461 25 d) Declaraciones La primera sentencia crear una variable boolean y la segunda un objeto Boolean: boolean b; Boolean B; e) Valores de Boolean Boolean.TRUE; Boolean.FALSE; f) Mtodos de Boolean boolean B.booleanValue(); String B.toString(); boolean B.equals( Object obj ); XII.- LA CLASE String Java posee gran capacidad para el manejo de cadenas dentro de sus clasesString yStringBuffer. Un objeto String representa una cadena alfanumrica de un valor constante que no puede ser cambiada despus de haber sido creada. Un objeto StringBuffer representa una cadena cuyo tamao puede variar. Los Strings son objetos constantes y por lo tanto muy baratos para el sistema. La mayora de las funciones relacionadas con cadenas esperan valores String como argumentos y devuelven valores String. Hay que tener en cuenta que las funciones estticas no consumen memoria del objeto, con lo cual es ms conveniente usar Character que char. No obstante, char se usa, por ejemplo, para leer ficheros que estn escritos desde otro lenguaje. Existen muchos constructores para crear nuevas cadenas: String(); String( String str ); String( char val[] ); String( char val[],int offset,int count ); String( byte val[],int hibyte ); Antonio Poma Jr. Ayacucho 263 Huancayo telfono: 201461 26 String( byte val[],int hibyte,int offset,int count ); Tal como uno puede imaginarse, las cadenas pueden ser muy complejas, existiendo muchas funciones muy tiles para trabajar con ellas y, afortunadamente, la mayora estn codificadas en la claseString. e) Funciones Bsicas La primera devuelve la longitud de la cadena y la segunda devuelve el carcter que se encuentra en la posicin que se indica en indice: int length(); char charAt( int indice ); f) Funciones de Comparacin de Strings boolean equals( Object obj ); boolean equalsIgnoreCase( Object obj ); Lo mismo queequals() pero no tiene en cuenta maysculas o minsculas. int compareTo( String str2 ); Devuelve un entero menor que cero si la cadena es lxicamente menor que str2. Devuelve cero si las dos cadenas son lxicamente iguales y un entero mayor que cero si la cadena es lxicamente mayor que str2. g) Funciones de Comparacin de Subcadenas boolean regionMatch( int thisoffset,String s2,int s2offset,int len ); boolean regionMatch( boolean ignoreCase,int thisoffset,String s2, int s2offset,int 1 ); Comprueba si una regin de esta cadena es igual a una regin de otra cadena. boolean startsWith( String prefix ); boolean startsWith( String prefix,int offset ); boolean endsWith( String suffix ); Devuelve si esta cadena comienza o termina con un cierto prefijo o sufijo comenzando en un determinado desplazamiento. int indexOf( int ch ); Antonio Poma Jr. Ayacucho 263 Huancayo telfono: 201461 27 int indexOf( int ch,int fromindex ); int lastIndexOf( int ch ); int lastIndexOf( int ch,int fromindex ); int indexOf( String str ); int indexOf( String str,int fromindex ); int lastIndexOf( String str ); int lastIndexOf( String str,int fromindex ); Devuelve el primer/ltimo ndice de un carcter/cadena empezando la bsqueda a partir de un determinado desplazamiento. String substring( int beginindex ); String substring( int beginindex,int endindex ); String concat( String str ); String replace( char oldchar,char newchar ); String toLowerCase(); String toUpperCase(); String trim(); Ajusta los espacios en blanco al comienzo y al final de la cadena. void getChars( int srcBegin,int srcEnd,char dst[],int dstBegin ); void getBytes( int srcBegin,int srcEnd,byte dst[],int dstBegin ); String toString(); char toCharArray(); int hashCode(); h) Funciones ValueOf La claseString posee numerosas funciones para transformar valores de otros tipos de datos a su representacin como cadena. Todas estas funciones tienen el nombre devalueOf, estando el mtodo sobrecargado para todos los tipos de datos bsicos. Veamos un ejemplo de su utilizacin: String Uno = new String( "Hola Mundo" ); float f = 3.141592; String PI = Uno.valueOf( f ); String PI = String.valueOf( f ); // Mucho ms correcto Antonio Poma Jr. Ayacucho 263 Huancayo telfono: 201461 28 Funciones de Conversin String valueOf( boolean b ); String valueOf( int i ); String valueOf( long l ); String valueOf( float f ); String valueOf( double d ); String valueOf( Object obj ); String valueOf( char data[] ); String valueOf( char data[],int offset,int count ); Usa arrays de caracteres para la cadena. String copyValueOf( char data[] ); String copyValueOf( char data[],int offset,int count ); Crea un nuevo array equivalente para la cadena. XII.- LA CLASE StringBuffer Java posee gran capacidad para el manejo de cadenas dentro de sus clasesString y StringBuffer. Un objeto String representa una cadena alfanumrica de un valor constante que no puede ser cambiada despus de haber sido creada. Un objeto StringBuffer representa una cadena cuyo tamao puede variar. La clase StringBuffer dispone de muchos mtodos para modificar el contenido de los objetos StringBuffer. Si el contenido de una cadena va a ser modificado en un programa, habr que sacrificar el uso de objetos String en beneficio de StringBuffer, que aunque consumen ms recursos del sistema, permiten ese tipo de manipulaciones. Al estar la mayora de las caractersticas de los StringBuffers basadas en su tamao variable, se necesita un nuevo mtodo de creacin: StringBuffer(); StringBuffer( int len ); StringBuffer( String str ); Se puede crear un StringBuffer vaco de cualquier longitud y tambin se puede utilizar un String como punto de partida para un StringBuffer. Antonio Poma Jr. Ayacucho 263 Huancayo telfono: 201461 29 StringBuffer Dos = new StringBuffer( 20 ); StringBuffer Uno = new StringBuffer( "Hola Mundo" ); d) Cambio de Tamao El cambio de tamao de un StringBuffer necesita varias funciones especficas para manipular el tamao de las cadenas: int length(); char charAt( int index ); void getChars( int srcBegin,int srcEnd,char dst[],int dstBegin ); String toString(); void setLength( int newlength ); void setCharAt( int index,char ch ); int capacity(); void ensureCapacity( int minimum ); void copyWhenShared(); Obervar que una de las funciones devuelve una cadena constante normal de tipo String. Este objeto se puede usar con cualquier funcin String, como por ejemplo, en las funciones de comparacin. e) Modificacin del Contenido Para cambiar el contenido de un StringBuffer, se pueden utilizar dos mtodos: append() einsert(). En el ejemplo vemos el uso de estos dos mtodos: class CadAppend { public static void main( String args[] ) { StringBuffer str = new StringBuffer( "Hola" ); str.append( " Mundo" ); System.out.println( str ); } } En este otro ejemplo, mostramos un mtodo muy simple que le da la vuelta a una cadena: Antonio Poma Jr. Ayacucho 263 Huancayo telfono: 201461 30 class CadInversa { public static String cadenaInversa( String fuente ) { int longitud = fuente.length(); StringBuffer destino = new StringBuffer( longitud ); for( int i=(longitud-1); i >= 0; i-- ) destino.append( fuente.charAt( i ) ); return( destino.toString() ); } public static void main( String args[] ) { System.out.println( cadenaInversa( "Hola Mundo" ) ); } } Las funciones que cambian el tamao son pues: StringBuffer append( Object obj ); StringBuffer append( String str ); StringBuffer append( char str[] ); StringBuffer append( char str[],int offset,int len ); StringBuffer append( boolean b ); StringBuffer append( int i ); StringBuffer append( long l ); StringBuffer append( float f ); StringBuffer append( double d ); StringBuffer append( char ch ); StringBuffer insert( int offset,Object obj ); StringBuffer insert( int offset,String str ); StringBuffer insert( int offset,char str[] ); StringBuffer insert( int offset,boolean b ); StringBuffer insert( int offset,int i ); StringBuffer insert( int offset,long l ); StringBuffer insert( int offset,float f ); StringBuffer insert( int offset,double d ); StringBuffer insert( int offset,char ch ); Antonio Poma Jr. Ayacucho 263 Huancayo telfono: 201461 31 f) Operadores de Concatenacin Hay que recordar que los operadores "+" y "+=" tambin se pueden aplicar a cadenas. Ambos realizan una concatenacin y estn implementados con objetos StringBuffer. Por ejemplo, la sentencia: String s = "Qu" + " tal ?"; es interpretada por el compilador como: String s = new StringBuffer().append( "Qu" ).append( " tal ?" ).toString(); y se marcara el StringBuffer para borrarlo ya que el contenido pasa al objeto String. Tambin, la sentencia: s += " por ah!"; sera interpretada por el sistema como: String s = new StringBuffer().append( s ).append( " por ah!" ).toString(); y volvera a marcar para borrar el nuevo StringBuffer. XIII.- CONTROL DE FLUJ O Muchas de las sentencias de control del flujo del programa se han tomado del C: c) Sentencias de Salto if/else if( Boolean ) { sentencias; } else { sentencias; } Antonio Poma Jr. Ayacucho 263 Huancayo telfono: 201461 32 switch switch( expr1 ) { case expr2: sentencias; break; case expr3: sentencias; break; default: sentencias; break; } d) Sentencias de Bucle Bucles for for( expr1 inicio; expr2 test; expr3 incremento ) { sentencias; } Tambin se soporta el operador coma (,) en los bucles for for( a=0,b=0; a < 7; a++,b+=2 ) Bucles while while( Boolean ) { sentencias; } Bucles do/while do { sentencias; }while(Boolean); Control General del Flujo break [etiqueta] continue [etiqueta] return expr; etiqueta: sentencia; En caso de que nos encontremos con bucles anidados, se permite el uso de etiquetas para poder salirse de ellos, por ejemplo: Antonio Poma Jr. Ayacucho 263 Huancayo telfono: 201461 33 uno: for( ) { dos: for( ) { continue; // seguira en el bucle interno continue uno; // seguira en el bucle principal break uno; // se saldra del bucle principal } } En el cdigo de una funcin siempre hay que ser consecuentes con la declaracin que se haya hecho de ella. Por ejemplo, si se declara una funcin para que devuelva un entero, es imprescindible que se coloque un return final para salir de esa funcin, independientemente de que haya otros en medio del cdigo que tambin provoquen la salida de la funcin. En caso de no hacerlo se generar un Warning, y el cdigo Java no se puede compilar con Warnings. int func() { if( a == 0 ) return 1; return 0; // es imprescindible porque se retorna un entero } XIV.- EJEMPLOS DE PROGRAMAS UTILIZANDO CONTROL DE FLUJO g) Programa para crear la tabla de multiplicar de un nmero import java.io.*; public class tabla { public static void main(String[] args) throws IOException { InputStreamReader isr=new InputStreamReader(System.in); BufferedReader e=new BufferedReader(isr); int a,x; String salida; System.out.println("\n *********** tabla *********** \n"); System.out.print(" Ingrse numero: "); a=Integer.parseInt(e.readLine()); Antonio Poma Jr. Ayacucho 263 Huancayo telfono: 201461 34 System.out.print("\n"); for (x=1;x<=12;x++) { salida= " " + a + " * " + x + " = " + (x*a); System.out.println(salida); } System.out.println("\n"); } } h) Programa para determinar si un nmero es primo o no import java.io.*; public class primo { public static void main(String[] args) throws IOException { InputStreamReader isr=new InputStreamReader(System.in); BufferedReader e=new BufferedReader(isr); int x,d,a,r; System.out.println("\n *********** Primo *********** \n"); System.out.print(" Ingrse numero: "); a=Integer.parseInt(e.readLine()); d=0; Antonio Poma Jr. Ayacucho 263 Huancayo telfono: 201461 35 for (x=1;x<=a;x++) { r= a % x; if (r==0) { d++; } } if (d>=3) { System.out.print(" El numero NO es primo "); } else { System.out.print(" El numero SI es primo "); } System.out.println("\n"); } } i) Programa que imprime una serie de n nmeros primos import java.io.*; public class serieprimo { public static void main(String[] args) throws IOException { InputStreamReader isr=new InputStreamReader(System.in); BufferedReader e=new BufferedReader(isr); int x,n,a,aux,d; System.out.println("\n****** NUEMROS PRIMOS ****** \n"); System.out.print("\nCuantos primos: "); x=Integer.parseInt(e.readLine()); System.out.println("\n"); Antonio Poma Jr. Ayacucho 263 Huancayo telfono: 201461 36 n = 1; a = 1; do { d = 0; for(aux=2;aux<a-1;aux++) { if (a % aux == 0) d++; } if (d==0) { n++; System.out.print(a + " "); } a++; } while(n<=x); System.out.print("\n"); System.out.print("\n"); } } j) Programa que imprime los pares menores a un nmero public class paresmenores { public static void main(String[] args) throws java.io.IOException{ int a; System.out.println("\n****** Pares menores ********"); System.out.print("\nIngrese un numero entero positivo: "); java.io.BufferedReader lectura = new java.io.BufferedReader(new java.io.InputStreamReader(System.in)); a = Integer.parseInt(lectura.readLine()); System.out.println(" "); Antonio Poma Jr. Ayacucho 263 Huancayo telfono: 201461 37 if(a%2==0){ for(a-=2; a>=0; a-=2){ System.out.print(a + ", "); } } if(a%2==1){ a-=1; for(a-=0; a>=0; a-=2){ System.out.print(a + ", "); } } System.out.println(" "); } } k) Programa que dibuja un rbol de asteriscos import java.io.*; public class arbol { public static void main(String[] args) throws IOException { InputStreamReader isr=new InputStreamReader(System.in); BufferedReader e=new BufferedReader(isr); int x,c,f,aux,aux1,aux2; System.out.println("\n****** Arbol Inpar ****** \n"); System.out.print("\nCuantas filas: "); x=Integer.parseInt(e.readLine()); System.out.println("\n"); c = 1; Antonio Poma Jr. Ayacucho 263 Huancayo telfono: 201461 38 f=1; do { for(aux1=1;aux1<=40-(c/2);aux1++) { System.out.print(" "); } for(aux2=1;aux2<=c;aux2++) { System.out.print("*") ; } System.out.print("\n"); c+=2; f++; }while(f<=x); System.out.print("\n"); System.out.print("\n"); } } l) Programa a para convertir un numero decimal a binario import java.io.*; public class base2 { public static void main(String[] args) throws IOException { InputStreamReader isr=new InputStreamReader(System.in); BufferedReader e=new BufferedReader(isr); int x,d,a,r; String n; Antonio Poma Jr. Ayacucho 263 Huancayo telfono: 201461 39 System.out.println("\n ****** Decimal a base 2 ****** \n"); System.out.print(" Ingrse numero: "); a=Integer.parseInt(e.readLine()); n = ""; x = a; do { d = a % 2; r = a / 2; n = d + n; a = r; } while(r>=2); n = a + n; System.out.print(" El numero " + x + " en binario es " + n); System.out.print("\n"); System.out.print("\n"); } }