domingo, 30 de noviembre de 2014

Clase para pedir datos en Java

import java.io.IOException;


public class PedirDatos {
/* Funcion para leer caracteres*/
public static char leerCaracter(String frase){
char caracter;
caracter=leerCadena(frase).charAt(0);
return caracter;
}
  
/* Funcion para leer cadenas*/
public static String leerCadena(String frase){
String cadena="";
char caracter=(char)0;
int ascii = 0;
System.out.println(frase);
do{
cadena=cadena+caracter;
try {
ascii = System.in.read();
} catch (IOException e) {
e.printStackTrace();
}
caracter = (char) ascii;
}while(ascii!=13);
return cadena.trim();
}

/* Funcion para leer enteros*/
public static int leerEntero(String frase){
int entero=0;
String cadena;
boolean correcto=false;

do{
try{
cadena=leerCadena(frase); 
entero=Integer.parseInt(cadena);
correcto=true;
}catch(NumberFormatException e){
System.out.println("El valor introducido no es un entero");
}
}while(!correcto);
return entero;

}

/* Funcion para leer decimales*/
public static double leerDecimal(String frase){
double decimal=0;
String cadena;
boolean correcto=false;

do{
try{
cadena=leerCadena(frase); 
decimal=Double.parseDouble(cadena);
correcto=true;
}catch(NumberFormatException e){
System.out.println("El valor introducido no es un decimal");
}
}while(!correcto);
return decimal;

}

}

Número Vampiro en Java

public class Vampiro {

public static boolean verificaNum(int numero, int[] digitos) {
// verifica si esta en las posibles combinaciones
String numS = numero + "";
int ok = 0, numAc, len = numS.length();

for (int i = 0; i < len; i++) {
numAc = Integer.parseInt(numS.substring(i, i + 1));
for (int j = 0; j < digitos.length; j++) {
if (numAc == (digitos[j])) {
ok++;
break;
}
}
}
if (ok == len) {
return true;
}
return false;
}

public static boolean esVampiro(int n) {
String num = n + "";
int lon = num.length(), ini = 1;
int[] a = new int[lon]; // Array para los digitos

if (lon % 2 != 0) { // Si los digitos del numeros es impar no es vampiro
return false;
}

for (int i = 0; i < lon; i++) {
a[i] = Integer.parseInt(num.substring(i, i + 1));
}

for (int i = 1; i < lon / 2; i++) {
ini *= 10;
}

for (int i = ini; i < ini * 10; i++) {
for (int j = ini; j < ini * 10; j++) {
if (i * j == n && verificaNum(i, a) && verificaNum(j, a)) {
return true;
}
}
}
return false;
}

public static void main(String[] args) {
int nu;
nu = PedirDatos.leerEntero("Introduce un número de cuatro cifras: ");
System.out.print("El número "+nu);
if(esVampiro(nu)){
System.out.println(" es vampiro.");
return;
}
System.out.println(" no es vampiro.");

}
}