FAQ

  1. ¿Cómo debo hacer compraciones de igualdad entre Cadenas? [respuesta]
  2. ¿Como seteo el PATH y para que sirve? [respuesta]
  3. ¿Por qué no me funcionan las aplicaciones Java en mi Windows XP? [respuesta]
  4. ¿Cómo puedo conectarme a MySQL? [respuesta]
  5. ¿Cómo puedo capturar caracteres desde el teclado en Java? [respuesta]
  6. ¿Como hago una conexion UDP? [respuesta]
  7. ¿Qué son los wrappers y para que sirven? [respuesta]
  8. ¿Cómo puedo saber la fecha del sistema? [respuesta]
  9. ¿Cómo puedo hacer una peticion a un servidor HTTP? [respuesta]
  10. ¿Cómo sumarle o restarle dias a una fecha? [respuesta]

Respuestas

1) En Java los tipos String son objetos y no tipos primitivos, por ende no se pueden comparar con 2 signos iguales de esta forma ==, en vez de ello existe un metodo llamado equals() que es usado para esta funcion. Por ejemplo if(cadena1.equals(cadena2)).

2) Setear el PATH en tu maquina sirve para que esta sepa donde debe buscar los programas que no encuentra o desconoce.

Tener seteado en PATH de nustra maquina la ruta al bin del JDK sirve para poder compilar y ejecutar nuestros programas Java desde la consola estando parados en cualquier directorio o disco local de nuestro PC, y no debemos llevar nuestros .java al bin del JDK para compilalro y ejecutarlos.

Para setear nuestro path basta con abriri una sonsola (ventana DOS) o como prefieran llamarle y escribir esto

SET PATH = %PATH%;<RUTA_AL_BIN>

Donde <RUTA_AL_BIN> debes reemplazarlo pro la ruta completa a nuestro bin del JDK, por ejemplo, en mi caso tengo instalado la version 1.4.2_03 del J2SE y se encuntra en la carpeta C:j2sdk1.4.2_03 entonces para setear mi PATH debo escribir esto

SET PATH = %PATH%;C:j2sdk1.4.2_03bin

el %PATH% significa que estoy agrenado ademas todas las rutas del PATH actual, es como decir en Java por ejemplo

String path = “algo”;

path = path + “otro algo”;

es decir, sirve para no perder lo que ya habíia en él.

3) La razon es pq al momento de salir al mercado windows XP, Microsoft tenia algunos problemas con SUN, la empresa propietaria de la tecnologia Java, por lo cual nustro tio decidio no colocar la Maquina Virtual de Java (JVM) en su nueva distribucion de windows, por ende, cualquier programa en Java no podria funcionar por el hecho de no existir dicha JVM.

Claro, luego los tribunales obligaron a M$ a volver a incluirla, pero lamentablemente la mayoria de las distribuciones que nos llegan son de la epoca en cuando esta no venia incluida.

Para solventar dicho problema debemos bajarnos la JVM o tambien conocida como J2RE desde el sitio oficial de SUN http://java.sun.com, cabe destacar que es completamente gratuita.

4) Necesitas tener el driver JDBC que es el que se utiliza para hacer conecciones y query’s a nuestra base de datos MySQL , puedes bajarlo desde aqui: http://www.mysql.com/products/connector/j/

Para instalarlo puedes copiar el contenido a c:JAVA_HOMEsrccommysqljdbc y necesitas actualizar tu classpath, en el editor que estes usando o directamente desde la consola.

5) Las instrucciones System.in.read(); nos permite leer entradas desde el teclado en codigo ASCII, mediante un ciclo capturamos los caracteres introducidos hasta que se presione la tecla ENTER, almacenandolos en un STRING, ya despues, depende lo que necesitemos, lo caovertimos a Integer, Double, etc… basicamente es lo que hace la siguiente clase 🙂

Código:

import java.io.*; import java.util.*; public class MeterDatos { public static String readLine() { char nextChar; String result = “”; boolean done = false; while (!done) { nextChar = readChar(); if (nextChar == ‘n’) done = true; else if (nextChar == ‘r’) { //Do nothing. //Next loop iteration will detect ‘n’ } else result = result + nextChar; } return result; } public static String readLineWord() { String inputString = null, result = null; boolean done = false; while(!done) { inputString = readLine(); StringTokenizer wordSource = new StringTokenizer(inputString); if (wordSource.hasMoreTokens()) { result = wordSource.nextToken(); done = true; } else { System.out.println(“Your input is not correct. Your input must”); System.out.println(“contain at least one nonwhitespace character.”); System.out.println(“Please, try again. Enter input:”); } } return result; } public static int readLineInt() { String inputString = null; int number = -9999;//To keep the compiler happy. //Designed to look like a garbage value. boolean done = false; while (! done) { try { inputString = readLine(); inputString = inputString.trim(); number = (Integer.valueOf(inputString).intValue()); done = true; } catch (NumberFormatException e) { System.out.println( “Your input number is not correct.”); System.out.println(“Your input number must be”); System.out.println(“a whole number written as an”); System.out.println(“ordinary numeral, such as 42”); System.out.println(“Please, try again.”); System.out.println(“Enter a whole number:”); } } return number; } public static long readLineLong() { String inputString = null; long number = -9999;//To keep the compiler happy. //Designed to look like a garbage value. boolean done = false; while (! done) { try { inputString = readLine(); inputString = inputString.trim(); number = (Long.valueOf(inputString).longValue()); done = true; } catch (NumberFormatException e) { System.out.println( “Your input number is not correct.”); System.out.println(“Your input number must be”); System.out.println(“a whole number written as an”); System.out.println(“ordinary numeral, such as 42”); System.out.println(“Please, try again.”); System.out.println(“Enter a whole number:”); } } return number; } public static double readLineDouble() { String inputString = null; double number = -9999;//To keep the compiler happy. //Designed to look like a garbage value. boolean done = false; while (! done) { try { inputString = readLine(); inputString = inputString.trim(); number = (Double.valueOf(inputString).doubleValue()); done = true; } catch (NumberFormatException e) { System.out.println( “Your input number is not correct.”); System.out.println(“Your input number must be”); System.out.println(“an ordinary number either with”); System.out.println(“or without a decimal point,”); System.out.println(“such as 42 or 9.99”); System.out.println(“Please, try again.”); System.out.println(“Enter a whole number:”); } } return number; } public static float readLineFloat() { String inputString = null; float number = -9999;//To keep the compiler happy. //Designed to look like a garbage value. boolean done = false; while (! done) { try { inputString = readLine(); inputString = inputString.trim(); number = (Float.valueOf(inputString).floatValue()); done = true; } catch (NumberFormatException e) { System.out.println( “Your input number is not correct.”); System.out.println(“Your input number must be”); System.out.println(“an ordinary number either with”); System.out.println(“or without a decimal point,”); System.out.println(“such as 42 or 9.99”); System.out.println(“Please, try again.”); System.out.println(“Enter a whole number:”); } } return number; } public static char readLineNonwhiteChar() { boolean done = false; String inputString = null; char nonWhite = ‘ ‘;//To keep the compiler happy. while (! done) { inputString = readLine(); inputString = inputString.trim(); if (inputString.length() == 0) { System.out.println( “Your input is not correct.”); System.out.println(“Your input must contain at”); System.out.println( “least one nonwhitespace character.”); System.out.println(“Please, try again.”); System.out.println(“Enter input:”); } else { nonWhite = (inputString.charAt(0)); done = true; } } return nonWhite; } public static boolean readLineBoolean() { boolean done = false; String inputString = null; boolean result = false;//To keep the compiler happy. while (! done) { inputString = readLine(); inputString = inputString.trim(); if (inputString.equalsIgnoreCase(“true”) || inputString.equalsIgnoreCase(“t”)) { result = true; done = true; } else if (inputString.equalsIgnoreCase(“false”) || inputString.equalsIgnoreCase(“f”)) { result = false; done = true; } else { System.out.println( “Your input number is not correct.”); System.out.println(“Your input number must be”); System.out.println(“one of the following:”); System.out.println(“the word true,”); System.out.println(“the word false,”); System.out.println(“the letter T,”); System.out.println(“or the letter F.”); System.out.println(“You may use either uppercase”); System.out.println(“or lowercase letters.”); System.out.println(“Please, try again.”); System.out.println(“Enter input:”); } } return result; } public static char readChar() { int charAsInt = -1; //To keep the compiler happy try { charAsInt = System.in.read(); } catch(IOException e) { System.out.println(e.getMessage()); System.out.println(“Fatal error. Ending Program.”); System.exit(0); } return (char)charAsInt; } public static char readNonwhiteChar() { char next; next = readChar(); while (Character.isWhitespace(next)) next = readChar(); return next; } }

compila la clase, si lo notaste los metodos son de tipo “static”, entonces, no es necesario creear objeto de esta clase, unicamente pon el archivo .class en la misma carpeta que tu aplicacion.

para usarla solamente seria asi:

String mytext = MeterDatos.readLine();

double myVar = MeterDatos.readLineDouble();

etc….

6) Una conexion UDP es para establecer una comunicacion, no es necesario establecer una conexion entre las dos maquinas para enviar el mensage, la maquina puede enviar el mensage y no se serciora de que halla llegado, solo lo envia a una IP especificada y si esa IP estaba escuchando el puerto, entonces llegara correctamente el mensage, sino el paquete se perdera, el siguiente ejemplo es un Chat en modo consola:

Código
/*

* Author: Crysfel Villa

* Created: Friday, April 22, 2005 9:40:46 AM

* Modified: Friday, April 22, 2005 9:40:46 AM

*/

import java.net.DatagramSocket;

import java.net.DatagramPacket;

import java.net.InetSocketAddress;

import java.net.InetAddress;

public class Chat extends Thread

{

static DatagramSocket ds=null;

static InetAddress ia=null;

static int puerto 1020;

static String maxCadena null;

static String usuario;

static void conectar()

{

try

{

InetSocketAddress isa=new InetSocketAddress("123.14.254.124",puerto);

ia isa.getAddress();

ds = new DatagramSocket(puerto);

System.out.println("Socket conectado!");

}

catch(Exception e)

{

System.out.println("Error al conectarn"+e);

}

}

static void enviar(String cadena)

{

byte enviar[];

int longitud cadena.length();

enviar cadena.getBytes();

try

{

DatagramPacket dp = new DatagramPacket(enviar,longitud,ia,puerto);

ds.send(dp);

System.out.println(cadena);

}

catch(Exception e)

{

System.out.println("Error al enviar mensajen"+e);

}

}

static void recibir()

{

byte nada[] = maxCadena.getBytes();

DatagramPacket dp = new DatagramPacket(nada,maxCadena.length());

try

{

while (true)

{

ds.receive(dp);

if (dp!=null)

{

nada dp.getData();

for (int m=0m<=nada.length-1m++)

System.out.print((char)nada[m]);

System.out.println();

break;

}

}

}

catch(Exception e)

{

System.out.println("Error al recibir mensajen"+e);

}

}

static void cerrar()

{

ds.close();

System.out.println("Socket cerrado!");

}

public static void main(String a[])

{

maxCadena = new String("                                                                                                               "+

"                                                                                                                                  ");

String msg "";

conectar();

usuario a[0];

enviar(usuario " Esta On-Line");

do{

recibir();

System.out.print("-> ");

msg MeterDatos.readLine();

if(msg.equals("exit"))

break;

else

enviar(usuario " Said: " msg);

}while(true);

cerrar();

}

}

7) Mediante los Wrapper’s se puede manipular los tipo de datos nativos de java como Objetos, usando metodos definidos para cada Wrapper.

Nativo Wrapper

int -> Integer

char -> Character

byte -> Byte

float -> Float

double -> Double

short -> Short

long -> Long

la forma de declararlos o mejor dicho instanciarlos es exactamente igual como cualquier otro objeto, ejemplo:

Integer num = new Integer(“12456”);

Double dNum = new Double(“1234.3456”);

Instanciando estos objetos ahora podemos usar los metodos que estos contienen como por ejemplo para comparar dos enteros sería así:

Código:

Integer num1 = new Integer("12456");

Integer num2 = new Integer("12456");

if ( num1.equals(num2) ){

System.out.println("Ok, si son iguales");

}else{

System.out.println("son diferentes");

}

recomiendo le des una mirada al API para que veas que metodos contienen cada uno de estos objetos.

http://java.sun.com/j2se/1.5.0/docs/…age-frame.html

cabe mencionar que los String‘s son wrappers u objetos 🙂

8) usamos la clase Date para optener la fecha actual del sistema, luego con la clase SimpleDateFormat le especificamos en que formato queremos la fecha, y despues simplemente la imprimimos.

Código:

import java.text.SimpleDateFormat;

import java.util.Date;

public class Fecha{

public static void main(String cvr[]){

Date fecha=new Date();

SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy");

System.out.println("La fecha de hoy es:" sdf.format(fecha));

}

}

9) La clase URL nos permitira hacer esto, primero la instanciamos pasandole un String con la dirección donde queremos recibir el contenido ej: http://www.yahoo.com despues abrimos un Stream, creamos un StreamReder para instanciar a un BufferReader que sera el que recibirá la respuesta del servidor.

Código:

//@autor Crysfel Villa

//Esta clase hace una peticion a un servidor WEB el

//cual regresa su contenido como un String (HTML)

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.MalformedURLException;

import java.net.URL;

public class LoaderModulo

{

public LoaderModulo(){

//do nothing 🙂

}

public String loadModulo(String sitio){

StringBuffer tmp = new StringBuffer();

String texto = new String();

try {

// Crea la URL con del sitio introducido, ej: http://google.com

URL url = new URL(sitio);

// Lector para la respuesta del servidor

BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));

String str;

while ((str in.readLine()) != null) {

tmp.append(str);

}

in.close();

texto tmp.toString();

}catch (MalformedURLException e) {

texto "<h2>No esta correcta la URL</h2>".toString();

catch (IOException e) {

texto "<h2>Error: No se encontro el l pagina solicitada".toString();

}

return texto;

}

}

Forma de uso, poner estas linias en el MAIN() o bien en un JSP o en alguna clase o donde la necesites 🙂

Código:

LoaderModulo web = new LoaderModulo();

System.out.println(web.loadModulo("http://www.yahoo.com"));

10) RespuestaEs facil de realizar con el GregorianCalendar de JAVA y su evento .add(‘fecha’,’numero de dias a sumarle a la fecha’)

Ejemplo

Código:

public java.sql.Date fechaMas(java.sql.Date fchint dias){

Calendar cal = new GregorianCalendar();

cal.setTimeInMillis(fch.getTime());

cal.add(Calendar.DATEdias);

return new Date(cal.getTimeInMillis());

}

public java.sql.Date fechaMenos(java.sql.Date fchint dias){

Calendar cal = new GregorianCalendar();

cal.setTimeInMillis(fch.getTime());

cal.add(Calendar.DATE, - dias);

return new Date(cal.getTimeInMillis());

}

Al momento de Invocar el evento ‘Mas’ o ‘Menos’, se le envian los paramentros ‘FECHA’ y ‘número de dias que se le sumaran o restaran a esta fecha’.

Leave A Comment?