jueves, 3 de marzo de 2011

Ejemplos Menus #1

Menu
1. Fibonacci
2. Serie A
3. Tabla de multiplicar
4. Convertir Mayusculas, minusculas y contar letras

Fibonacci:
La sucesión inicia con 0 y 1, y a partir de ahí cada elemento es la suma de los dos anteriores.
Esta sucesión fue descrita en Europa por Leonardo de Pisa, matemático italiano del siglo XIII también conocido como Fibonacci. Tiene numerosas aplicaciones en ciencias de la computación, matemáticas y teoría de juegos.
Ejemplo:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55.........


public String cadFibo(int d1, int d2, int serie){
        int suma = 0;
        int n1 = d1;
        int n2 = d2;
        String cadena = "";
        for (int i = 0; i < serie; i++){
            suma = n1 + n2;
            cadena = cadena + " " + n1;
            n1 = n2;
            n2 = suma;
        }
        return cadena;
    }


Serie A: 1/2 + 2/4 + 3/7 + 4/11.........

 Tabla de Multiplicar: Las tablas de multiplicar se usan para definir la operación binaria del producto para un sistema algebraico n x n = n.


public String resMulti(int d1, int d2){
        String r = "" + (d1 * d2);
        return r;
    }


Convertir palabras y contarlas:


public String canCaracteres(String d1){
        String cadena = d1;
        int n = cadena.length();
        return ""+n;
    }


 Archivo del codigo - Descarga

miércoles, 2 de marzo de 2011

El siguiente código muestra un ejemplo completo de uso de RMS.

import java.io.*;
import javax.microedition.midlet.*;
import javax.microedition.rms.*;

public class RMS extends MIDlet {
// nombre de la BD
static final String BD = "datos";

String dato;
int id, i;
char b;

public RMS() {
RecordStore rs = null;

// Borramos la BD si tenía algo
try {
RecordStore.deleteRecordStore(BD);
} catch( Exception e ){}

try {
// Abrimos el recordStore
rs = RecordStore.openRecordStore(BD, true);

guardaRegistro(rs,"Datos del registro 1");
guardaRegistro(rs,"Datos del registro 2");
guardaRegistro(rs,"Datos del registro 3");

// Leemos los registros
RecordEnumeration registros = rs.enumerateRecords(null, null, false);
// Recorremos todos los elementos
while (registros.hasNextElement()) {

// Obtenemos el ID del siguiente registro
verRegistro(rs, registros.nextRecordId());
}
rs.closeRecordStore();
} catch( RecordStoreException e ){
System.out.println( e );
}
notifyDestroyed();
}

public void verRegistro(RecordStore rs, int id) {
try {
ByteArrayInputStream bais = new ByteArrayInputStream(rs.getRecord(id));
DataInputStream is = new DataInputStream(bais);
// leemos el registro
try {
dato = is.readUTF();
System.out.println("-> "+dato);
} catch (EOFException eofe) {
} catch (IOException ioe) {}
} catch (RecordStoreException e) {}
}

public void guardaRegistro(RecordStore rs, String dato) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream os = new DataOutputStream(baos);
try {
// guadar el dato
os.writeUTF(dato);
} catch (IOException ioe) {}

// extraer el array de butes
byte[] b = baos.toByteArray();

// lo añadimos al recordStore
try {
rs.addRecord(b, 0, b.length);
} catch (RecordStoreException rse) {}
}

public void destroyApp( boolean unconditional ) {}
public void startApp() {}
public void pauseApp() {}
}

martes, 1 de marzo de 2011

RMS: Almacenamiento en MIDP

MIDP define una sencilla base de datos orientada a registros que permite almacenar a las aplicaciones datos de forma persistente. Esta base se denomina Record Management System (RMS).

A continuación, se puede ver un sencillo ejemplo de creación de un RecordStore:

import javax.microedition.midlet.*;
import javax.microedition.rms.*;

public class RecordStoreTest1 extends MIDlet {
public RecordStoreTest1() {
}
public void startApp() throws MIDletStateChangeException {
RecordStore rs=null;
try {
rs = RecordStore.openRecordStore("file1",true);
System.out.println("Archivo se abre");
}catch(Exception e){
System.out.println("Error: "+e.getMessage());
}
finally{
try {
rs.closeRecordStore();
System.out.println("archivo cerrado");
}catch (Exception e){
System.out.println("Error: "+e.getMessage());
}
}
destroyApp(true);
notifyDestroyed();
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}
}

Metodo valida el correo

/**
* Este metodo valida el correo
* El correo valida que antes de la @ 'arroba' debe de tener caracateres
* alfanumericos solamenete, ademas entre la @ y el punto
* tambien alfanuemricos y despues del punto
*
* @param m String es la cadena que recibe
* @return boolean si el correo es valido retorna true
*/


public boolean validarMail(String m) {
char c1 = m.charAt(0);
int pos1 = 0;
int pos2 = 0;
int a1 = 0;
int a2 = 0;
int a3 = 0;
int x = 0;
String cadena1 = "";
String cadena2 = "";
String cadena3 = "";
if (c1 != '@' && c1 != '.') {
for (int i=1; i <>
if (m.charAt(i) == '@') {
pos1 = i;
}
}
for (int i=1; i <>
if (m.charAt(i) == '.') {
pos2 = i;
}
}
cadena1 = m.substring(0, pos1);
cadena2 = m.substring(pos1+1, pos2);
cadena3 = m.substring(pos2+1, m.length());
for (int i = 0;i <>
System.out.println("carcater "+cadena1);
a1 = cadena1.codePointAt(i);//
if ((a1 > 47 && a1 <> 64 && a1 <>
|| (a1 > 96 && a1 < a1="="46">
x++;
}
}
System.out.println("1 "+cadena2);
for (int i = 0; i <>
a2 = cadena2.codePointAt(i);
System.out.println("carcater "+a2);
if ((a2 > 47 && a2 <> 64 && a2 <>
|| (a2 > 96 && a2 <>
x++;
}
}
for (int i = 0;i <>
a3 = cadena3.codePointAt(i);
if ((a3 > 47 && a3 <> 64 && a3 <>
|| (a3 > 96 && a3 <>
x++;
}
}
System.out.println("xxx "+x+" "+(m.length()-2));
if (x == m.length()- 2) {
if (pos1 != 0 && pos2 != 0 && (pos1 + 2) <>
if (m.length()-1 >= (pos2 + 2)) {
return true;
}else {
return false;
}
}else{
return false;
}
}else {
return false;
}
}else {
return false;
}
}

jueves, 24 de febrero de 2011

Calculadora y Factorial en J2ME



package gui;
import javax.microedition.lcdui.ChoiceGroup;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.List;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.*;
public class main extends MIDlet implements CommandListener{
//Manejamos la pantalla con el display
public Display display;
//Aqui cargamos los texfield, list y group
public Form screen;
//Opciones del menu principal
public Command salir, calcular;
//Menu de opciones
public List menu;
public TextField dato1, operacion, dato2, total;
public ChoiceGroup operador;
public int mc;
public main(){
mc = 0;
dato1 = new TextField("1er Numero: ", "", 15, TextField.NUMERIC);
operador = new ChoiceGroup("Operacion:", ChoiceGroup.EXCLUSIVE);
dato2 = new TextField("2do Numero", "", 15, TextField.NUMERIC);
total = new TextField("Resultado", "", 15, TextField.UNEDITABLE);
calcular = new Command("Calcular", Command.OK, 2);
salir = new Command("Salir", Command.EXIT, 1);
}
public void startApp() {
display = Display.getDisplay(this);
menu();
}
public void menu(){
menu = new List("MENU PRINCIPAL", List.IMPLICIT);
menu.append("Calculadora", null);
menu.append("Factorial", null);
menu.addCommand(salir);
display.setCurrent(menu);
menu.setCommandListener(this);
}
private void organizaCalculadora() {
mc = 1;
screen = new Form("Calculadora");
display.setCurrent(screen);
screen.append(dato1);
operador.append("+", null);
operador.append("-", null);
operador.append("*", null);
operador.append("/", null);
screen.append(operador);
screen.append(dato2);
screen.append(total);
screen.addCommand(calcular);
screen.addCommand(salir);
screen.setCommandListener(this);
}
private void organizaFactoria(){
mc = 2;
screen = new Form("Factorial");
display.setCurrent(screen);
screen.append(dato1);
screen.append(total);
screen.addCommand(calcular);
screen.addCommand(salir);
screen.setCommandListener(this);
}
public void pauseApp() {}
public void destroyApp(boolean unconditional){notifyDestroyed();}
public void commandAction(Command c, Displayable d) {
//Si seleccionamos alguna de las opciones del menú
if (d == menu){
switch (menu.getSelectedIndex()){
case 0:
organizaCalculadora();
break;
case 1:
organizaFactoria();
break;
}
}
//Si seleccionamos calculadora realizamos esta operación
if (c == calcular && mc == 1){
int n = 0;
switch (operador.getSelectedIndex()){
case 0:
n = Integer.parseInt(dato1.getString()) + Integer.parseInt(dato2.getString());
break;
case 1:
n = Integer.parseInt(dato1.getString()) - Integer.parseInt(dato2.getString());
break;
case 2:
n = Integer.parseInt(dato1.getString()) * Integer.parseInt(dato2.getString());
break;
case 3:
n = Integer.parseInt(dato1.getString()) / Integer.parseInt(dato2.getString());
break;
}
total.setString(""+n);
}
//Si seleccionamos factorial realizamos esta operación
if (c == calcular && mc == 2){
int n,x = 0;
n = Integer.parseInt(dato1.getString());
if (n == 0 || n == 1){
n = 1;
}else{
for (x = n; x >= 2; --x){
n = n * (x - 1) ;
}
}
total.setString(""+n);
}
if (c == salir){
destroyApp(true);
}
}
}