quinta-feira, 12 de fevereiro de 2009

Classe Keyboard em Java


Saudações

Aqui está um código simples que demonstra uma forma de acessar os elementos individuais de uma String de Java. O código também mostra o uso da classe Keyboard que da uma força pro programador implementar um programa que recebe dados do usuário via teclado.

A partir da classe Keyboard podem ser criados programas que permitem uma interação com o usuário do programa. Não é nada de outro mundo, até porque não é usada uma GUI (Graphical User Interface) mas ainda assim, muito útil.


Programa simples: Recebe uma string do usuário e analisa cada elemento da string.
A partir da análise, o programa armazena os números contidos na string digitada pelo usuário em uma variável reservada para guardar os números, e as letras(sem símbolos especiais) armazena em outra variável reservada para guardar as letras. Separado letras e números, o programa imprime na tela a String completa, a variável somente com números e a variável somente com letras.


Exemplo de saída:








Antes de postar o código, é bom lembrar para os aprendizes(assim como eu) que para usar os métodos da classe Keyboard, é necessário compilá-la e executá-la, junto do código-fonte do programa que a usa(Um método bem simples: deixar as duas classes no mesmo diretório).




/**
* - USANDO CLASSE Keyboard
* - MANIPULANDO ELEMENTOS INDIVIDUAIS DE STRINGS
* - Autor - Paulo Henrique
**/

public class SeparaCaracter
{
public static void main(String args[])
{
String completa = "", // string via teclado
numeros = "", // numeros na string completa
letras = ""; // letras na string completa
int aux, // auxiliar para laço
tamanho = 0; // para receber tamanho da string

System.out.print("\n Entre com a string: ");
completa = Keyboard.readString(); // recebe string do teclado
tamanho = completa.length(); // pega tamanho da string


if (tamanho > 0) // se tem string armazenada
{
for (aux = 0; aux < tamanho; aux++)
{
switch(completa.charAt(aux))
{
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
numeros += completa.charAt(aux); // armazena numero que esta na posição
break;

case 'a': case 'b': case 'c': case 'd': case 'e':
case 'f': case 'g': case 'h': case 'i': case 'j':
case 'k': case 'l': case 'm': case 'n': case 'o':
case 'p': case 'q': case 'r': case 's': case 't':
case 'u': case 'v': case 'w': case 'x': case 'y':
case 'z': case 'A': case 'B': case 'C': case 'D':
case 'E': case 'F': case 'G': case 'H': case 'I':
case 'J': case 'K': case 'L': case 'M': case 'N':
case 'O': case 'P': case 'Q': case 'R': case 'S':
case 'T': case 'U': case 'V': case 'W': case 'X':
case 'Y': case 'Z':
letras += completa.charAt(aux); // armazena letra na posição especificada
break;

default:
break;
}


}

System.out.println("\n\n String completa: " + completa);
System.out.println("\n String numeros: " + numeros);
System.out.println("\n String letras: " + letras);
}
}
}



Em seguida a classe Keyboard que deve ser compilada junto pra que os métodos pra receber dados do teclado possam ser utilizados.



import java.io.IOException;
import java.lang.StringBuffer;
import java.lang.NumberFormatException;

/**
* Classe que fornece métodos abstratos para leitura do teclado
*/
public class Keyboard {

private static String keyboardReadInt () {
int in = 0;
char chr;
boolean sinal = false;
StringBuffer Valor = new StringBuffer("");
do {
try {
in = System.in.read();
chr = (char) in;
if ((in != 10) & (in != 13)) {
if (in >= 48 && in <= 57 || ( in == 45 && !sinal ) ) {
Valor.append(chr);
sinal = true;
}
}
} catch (IOException e) {}
} while (in != 10);
return Valor.toString();
}

private static String keyboardReadFloat () {
int in = 0;
char chr;
boolean ponto = false;
boolean sinal = false;
StringBuffer Valor = new StringBuffer("");

do {
try {
in = System.in.read();
chr = (char) in;
if ((in != 10) & (in != 13)) {
if (in >= 48 && in <= 57 || in == 46 || ( in == 45 && !sinal )) {
if ( in == 46 ) {
if ( ! ponto ) {
Valor.append(chr);
ponto = true;
}
} else {
Valor.append(chr);
}
sinal = true;
}
}
} catch (IOException e) {}
} while (in != 10);
return Valor.toString();
}

/**
* Lêr um int do teclado
* @result int lido
*/
public static int readInt () {
int retorno;

try {
retorno = Integer.parseInt(keyboardReadInt());
} catch (NumberFormatException e) {
retorno = 0;
}

return retorno;
}

/**
* Lêr um float do teclado
* @result float lido
*/
public static float readFloat () {
float retorno;
try {
retorno = Float.parseFloat(keyboardReadFloat());
} catch (NumberFormatException e) {
retorno = 0;
}
return retorno;
}

/**
* Lêr um char do teclado
* @result char lido
*/
public static char readChar () {
int in = 0;
char chr;
int cont = 0;
StringBuffer Valor = new StringBuffer("");
do {
try {
in = System.in.read();
chr = (char) in;
if ((in != 10) & (in != 13)) {
if ( cont == 0 ) {
Valor.append(chr);
}
cont++;
}
} catch (IOException e) {}
} while (in != 10);
return Valor.charAt(0);
}

/**
* Lêr um String do teclado
* @result String lido
*/
public static String readString () {
int in = 0;
char chr;
StringBuffer Valor = new StringBuffer("");
do {
try {
in = System.in.read();
chr = (char) in;
if ((in != 10) & (in != 13)) {
Valor.append(chr);
}
} catch (IOException e) {}
} while (in != 10);
return Valor.toString();
}
}

0 comentários: