19/02/06, 19:20:16
|
#31 (permalink)
|
Registrado: jun 2004
Ubicación: Monterrey NL
Mensajes: 1.971
|
Tema: Sistema de Archivos
Pregunta: Como leer el contenido de una carpeta?
Respuesta: En JAVA, las carpetas son tratadas como ficheros, por lo tanto la clase FILE nos resolvera el problema.
Código PHP:
import java.io.File; import java.util.ArrayList; import java.util.List;
/** * @author Crysfel Villa * Created on Jan 15, 2006 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */
public class Directorio {
public List getFiles(String src) throws Exception{ //Creamos el Objeto File con la URL que queremos desplegar File dir = new File(src); List lista = new ArrayList(); if (dir.isDirectory()) { if (!dir.exists()) { throw new Exception("Error: El directorio no existe"); }
//tomamos los ficheros contenidos en la URL dada String[] archivos = dir.list(); //agregamos cada fichero en una lista for(int i=0;i<archivos.length;i++) lista.add(archivos[i]); } return lista; } public static void main(String arg[]){ //instanciamos nuestro objeto Directorio directorio = new Directorio(); //tomamos el contenido del la carpeta en la lista List ficheros = directorio.getFiles("/home/crysfel/workspace"); //desplegamos cada uno System.out.println("Ficheros contenidos"); for(int i=0;i<directorio.size();i++) System.out.println("-> "+directorio.get(i)); } }
|
|
|
|
07/04/06, 14:34:06
|
#32 (permalink)
|
Registrado: jun 2004
Ubicación: Monterrey NL
Mensajes: 1.971
|
tema: Utilerias
pregunta: como generar PDFs??
respuesta: primero necesitamos bajarnos las librerias para poder hacer eso, en este ejmplo use iText, puedes bajar el JAR desde aqui: http://www.lowagie.com/iText/download.html.
Ahora agregas el jar a tu classpath, e comentado las partes mas importantes en el codigo siguiente, para que te des una idea de como empezar.
Código PHP:
/** * Enjoy :-) */ import java.awt.Color; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;
import com.lowagie.text.Chapter; import com.lowagie.text.Document; import com.lowagie.text.DocumentException; import com.lowagie.text.Font; import com.lowagie.text.FontFactory; import com.lowagie.text.Image; import com.lowagie.text.PageSize; import com.lowagie.text.Paragraph; import com.lowagie.text.Section; import com.lowagie.text.pdf.PdfWriter;
/** * Ejemplo de generacion de documentos PDFs * @author Crysfel Villa * April 06, 2006 */
public class GenerarPdf { public static void main(String arcg[]){ System.out.println("Comenzando..."); //Creamos el documento y asignamos margenes izq,der,arriba,abajo Document document = new Document(PageSize.A4, 50, 50, 50, 50); try{ //creamos el "escritor" de nuestro Documento pdf, especificando la ubicacion y nombre de este. PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream("primer.pdf")); //abrimos el escritor document.open(); //Crearemos un capitulo, le pondremos un titulo. //Paragraph nos permite introducir texto, y darle formato con FontFactory.getFont Paragraph titulo1 = new Paragraph("Capitulo 1",FontFactory.getFont(FontFactory.HELVETICA,18, Font.BOLDITALIC, new Color(40, 10, 255))); Chapter capitulo1 = new Chapter(titulo1, 1); //con '0' no mostramos el numero de pagina capitulo1.setNumberDepth(0); //creamos los subtitulos Paragraph subTitulo1 = new Paragraph("Introduccion",FontFactory.getFont(FontFactory.HELVETICA, 16,Font.BOLD, new Color(255, 43, 100))); Paragraph subTitulo2 = new Paragraph("Antecedentes",FontFactory.getFont(FontFactory.HELVETICA, 16,Font.BOLD, new Color(255, 43, 100))); //agregamos el capitulo1 a la seccion1 Section seccion1 = capitulo1.addSection(subTitulo1); Paragraph introduccion = new Paragraph("Esto es texto de la introduccion a nuestro archivo PDF, aqui puedes poner todo el contenido que se te ocurra, y recuerda, Java is so good ;)"); seccion1.add(introduccion); //agregamos otra seccion con el subtitulo2 Section seccion2 = capitulo1.addSection(subTitulo2); Paragraph antecedentes = new Paragraph("Esto es muy facil! espero te halla gustado! =D\n\nHave Funnnnnn"); seccion2.add(antecedentes); //agregamos el capitulo uno al documento document.add(capitulo1); //creamos una nueva pagina! document.newPage(); document.add( new Paragraph("Esta es una nueva pagina con una imagen!")); //ponemos una imagen Image jpg = Image.getInstance("imagen.jpg"); jpg.setAlignment(Image.MIDDLE); jpg.scalePercent(50, 50); document.add(jpg); //cerramos el "escritor" document.close(); }catch(DocumentException de){ ; }catch(FileNotFoundException fnfe){ ; }catch(IOException ioe){ ; } System.out.println("Done!!"); } }
have funnnnnnnn 
|
|
|
|
24/04/06, 14:09:36
|
#33 (permalink)
|
Registrado: oct 2005
Mensajes: 252
|
Tema: Arreglos
Pregunta: ¿Cómo ordenar un arreglo MUY GRANDE de enteros y que no demore demasiado?
Respuesta: Utilizando un ordenamiento rápido ó QuickSort.
Por ejemplo:
Código PHP:
//
public int[] quicksort(int arreglo[], int inicial, int finaliza) { int inferior = inicial; int superior = finaliza; int posicion = inicial; boolean continuar = true;
while (continuar) { continuar = false; while ((arreglo[posicion] <= arreglo[superior]) && (posicion != superior)) { superior--; } if (posicion != superior) { int temporal = arreglo[posicion]; arreglo[posicion] = arreglo[superior]; arreglo[superior] = temporal; posicion = superior; while ((arreglo[posicion] >= arreglo[inferior]) && (posicion != inferior)) { inferior++; } if (posicion != inferior) { continuar = true; temporal = arreglo[posicion]; arreglo[posicion] = arreglo[inferior]; arreglo[inferior] = temporal; posicion = inferior; } } } if ((posicion - 1) > inicial) { quicksort(arreglo, inicial, posicion - 1); } if (finaliza > (posicion + 1)) { quicksort(arreglo, posicion + 1, finaliza); } return arreglo; }
Esto sirve para cualquier arreglo, pero se recomienda para los muy grandes. inicial y finaliza son los límites y arreglo, pues el arreglo a ordenar. Esto ordena de menor a mayor.
Se puede hacer también utilizando los métodos de la clase Arrays del SDK... por ejemplo:
Código PHP:
//
Arrays.sort(arreglo);
donde arreglo puede ser un arreglo de byte, char, double, float, int, long, short, Object...
Hasta la vista!!
__________________
El último TipdaR
Última edición por Tipdar fecha: 24/04/06 a las 19:05:51.
|
|
|
|
26/04/06, 13:38:40
|
#34 (permalink)
|
Registrado: oct 2005
Mensajes: 252
|
Números fraccionarios
Tema: Clase Números Fraccionarios
Esta clase la he implementado para un proyecto de la facultad... a cualquiera puede servirle. He tratado de que sea lo más orientada a objetos posible.
Código PHP:
//
public class NumerosFraccionarios {
private int numerador;
private int denominador;
public NumerosFraccionarios(int numerador, int denominador) {
this.numerador = numerador;
this.denominador = denominador;
}
public NumerosFraccionarios(NumerosFraccionarios fraccion) {
numerador = fraccion.getNumerador();
denominador = fraccion.getDenominador();
}
public int getDenominador() {
return denominador;
}
public void setDenominador(int denominador) {
this.denominador = denominador;
}
public int getNumerador() {
return numerador;
}
public void setNumerador(int numerador) {
this.numerador = numerador;
}
// Le sumamos a nuestro objeto NumerosFraccionarios otro objeto NumerosFraccionarios
public void suma(NumerosFraccionarios fraccion) {
int den = fraccion.getDenominador();
this.numerador = this.numerador * den + fraccion.getNumerador() * this.denominador;
this.denominador = this.denominador * den;
}
// Le sumamos a nuestro objeto NumerosFraccionarios otro objeto NumerosFraccionarios
public void resta(NumerosFraccionarios fraccion) {
int den = fraccion.getDenominador();
this.numerador = this.numerador * den - fraccion.getNumerador() * this.denominador;
this.denominador = this.denominador * den;
}
// Multiplicamos nuestro objeto NumerosFraccionarios por otro objeto NumerosFraccionarios
public void multiplica(NumerosFraccionarios fraccion) {
this.numerador *= fraccion.getNumerador();
this.denominador *= fraccion.getDenominador();
}
// Dividimos nuestro objeto NumerosFraccionarios por otro objeto NumerosFraccionarios
public void divide(NumerosFraccionarios fraccion) {
this.numerador *= fraccion.getDenominador();
this.denominador *= fraccion.getNumerador();
}
// Lleva nuestro objeto NumerosFraccionarios a la fraccion irreducible
// Si 3/4, la fracción irreducible sería 3/4; si 2/4, la fracción irreducible sería 1/2
public void irreducible() {
int num = Math.abs(this.numerador);
int den = Math.abs(this.denominador);
int resto = 0;
while (den != 0) {
resto = num % den;
num = den;
den = resto;
}
this.numerador /= num;
this.denominador /= num;
}
}
Hasta pronto!
__________________
El último TipdaR
|
|
|
|
29/04/06, 10:29:38
|
#35 (permalink)
|
Registrado: oct 2005
Mensajes: 252
|
Tema: Arreglos
Pregunta: ¿De qué manera se puede buscar un elemento en un arreglo de enteros MUY GRANDE sin que demore mucho?
Respuesta: Utilizando una búsqueda binaria ó BinarySearch.
La precondición para usar una búsqueda binaria es que el arreglo esté previamente ordenado. En los arreglos muy grandes se aconseja hacer un ordenamiento rápido y luego la búsqueda binaria.
Ejemplo recursivo:
Código PHP:
//
// array es el arreglo ordenado, value el valor a buscar, start y ending los límites public int binarysearch(int array[], int value, int start, int ending) { if (ending < start) { return -1; } int middle = (start + ending) / 2; if (array[middle] == value) { return middle; } if (value < array[middle]) { return binarysearch(array, value, start, (ending - 1)); } else if (value >= array[middle]) { return binarysearch(array, value, (start + 1), ending); } return -1; }
Ejemplo iterativo:
Código PHP:
//
// array es el arreglo ordenado, value el valor a buscar, start y ending los límites public int binarysearch(int[] array, int value, int start, int ending) { while (start < ending) { int middle = (start + ending) / 2; if (array[middle] == value) { return middle; } if (value < array[middle]) { ending = middle - 1; } else if (value >= array[middle]) { start = middle + 1; } } return -1; }
Usando los métodos de la clase Arrays:
Código PHP:
//
// array es el arreglo ordenado (byte, int, short, long, char...) y element es el elemento a buscar. int posicion = Arrays.binarySarch(array, element);
En todos los ejemplos se devuelve la posición del elemento dentro del arreglo y si no existe devuelven un número negativo.
Have fun!
__________________
El último TipdaR
|
|
|
|
03/05/06, 12:54:18
|
#36 (permalink)
|
Registrado: oct 2005
Mensajes: 252
|
Tema: Validaciones
Pregunta: ¿Cómo validar que un correo electrónico esté correctamente escrito?
Respuesta: De muchas maneras, en este caso he empleado una validación mediante expresiones regulares.
Para este ejemplo he empleado el SDK 1.5:
Código:
//
import java.util.regex.Pattern;
//...
public boolean validarCorreoElectronico(String cadena) {
return ((Pattern.compile("[a-zA-Z0-9_]+[.[a-zA-Z0-9]+]*@[[a-zA-Z0-9_]+.[a-zA-Z0-9]+]+")).matcher(cadena)).matches();
}
Este método retorna true en caso de que esté bien escrito y false pues, para lo contrario.
__________________
El último TipdaR
Última edición por Tipdar fecha: 07/05/06 a las 18:38:07.
|
|
|
|
07/06/06, 11:33:13
|
#37 (permalink)
|
Registrado: jun 2004
Ubicación: Monterrey NL
Mensajes: 1.971
|
Tema: Validaciones
Pregunta: Como validar solo letras y espacios?
Respuesta: Este FAQ es una respuesta que le dia a una companiera, la cual queria validar que en un String solo tubiera letras y espacios.
para estos casos las expresiones regulares son la manera mas facil de resolverlo...
Lo unico que hay que hacer es modelar la expresion donde unicamente se acepten letras y espacio, las letras sabemos que comienzan de A-Z y a-z. hasta ahora la expresion esta asi
[A-Za-z]
Nos hace falta el espacio, pues se lo agregamos dentro del rango
[A-Za-z ]
ok, exelente! esa expresion cumple para:
ej1: Hola como estas
ej2: para EsTa TaMbIeN
pero no para estas:
ej1: No para mi, que triste :(
ej2: tampoco para mi?? porque??
bien, hasta aqui todo bien, perooooo, lo que aqui se necesita es que cuando esten otros caracteres que no sean letras ni espacio me lo haga saber para que yo les mande un mensaje de entrada invalida, ok, entonces lo unico que tenemos que ahcer es negar nuestra expresion.
[^A-Za-z ]
ahora si!! esta lista para decirme cuando se encuatran otros caracteres raros!!
ok, pasemos a JAVA, para el manejo de expresiones tenemos 2 clases...
java.util.regex.Matcher;
java.util.regex.Pattern;
con la primera definimos el patron o la expresion que queremos.
con la segunda validamos la entrada....
el codigo quedaria asi:
Código PHP:
/** * @author Crysfel Villa * June 6, 2006 */ import java.util.regex.Matcher; import java.util.regex.Pattern;
public class Expresion { public static void main(String args[]){ String entrada = " No para mi?? que triste :( por que??"; Pattern patron = Pattern.compile("[^A-Za-z ]"); Matcher encaja = patron.matcher(entrada); if(!encaja.find()) System.out.println("solo tiene letras y espacio!"); else System.out.println("tiene otra cosa");
//tambie podemos quitarle esos caracteres y dejar solo las letras y espacios, checa esto!! String resultado = encaja.replaceAll(""); System.out.println(entrada); System.out.println(resultado); } }
bueno, espero que este mini tutorial te peuda servir!! 
|
|
|
|
18/06/06, 20:14:12
|
#38 (permalink)
|
Registrado: jun 2004
Ubicación: Monterrey NL
Mensajes: 1.971
|
Tema: Utilerias.
Pregunta: Como puedo dar formato de moneda a un double?
Respuesta: Java nos provee de una clase para esto, la cual es DecimalFormat hubicada en el paquete import java.text.DecimalFormat.
Ok, primero necesitamos definir un patron, o mejor dicho especificar el formato que queremos, en el ejemplo siguiente el patron es $###,###.##, donde el caracter # sera sustituido por un numero.
Una vez definido el patron creamos una instancia de la clase DecimalFormat, y en el constructor de esta le pasamos el patron.
Por ultimo ejecutamos el metodo format y le damos el double que queremos darle formato, este metodo regresa un String.
Código PHP:
//By Crysfel
double value = 43214.346543; String patron = "$###,###.##"; DecimalFormat myFormatter = new DecimalFormat(patron); String salida = myFormatter.format(value); System.out.println(value + " " + patron + " " + salida);
Have funnnnnnnnn 
|
|
|
|
25/06/06, 09:53:17
|
#39 (permalink)
|
Registrado: jul 2005
Ubicación: Córdoba
Mensajes: 255
|
Tema: Listas doblemente Enlazadas.
Pregunta: que son y como puedo construir una?
Repuesta:
Las listas doblemente enlazadas, son un tipo de estructura de datos, que se caracteriza por contener unidades compuestas de datos entrelazadas entre si llamadas nodo los cuales contienen dos apuntadores, uno hacia adelante, y el otro hacia atras.( Para entender esto, se debe tener una idea basica de estructuras de datos, punteros, y clases)
Estos Nodos, se enlazan entre ellos, formando una cadena de datos.( identica a las Listas enlazadas simples ya tratadas en estas FAQ's pero que se podra recorrer luego en dos direcciones: de atras hacia adelante y de adelante hacia atras. )
Ejemplo:
Este ejemplo, va a constar de 3 partes. En la primera, laimplementacion de la clase subnodo; en la segunda, la imp. de la clase ListaDoble; y en la ultima un pequeño programita que hace algunas operaciones para testearla.
Primera parte:
Código PHP:
public class subnodo | |