Mostrando entradas con la etiqueta Java. Mostrar todas las entradas
Mostrando entradas con la etiqueta Java. Mostrar todas las entradas

Leer archivo java

private static String devuelveContenido( String archivo ) throws FileNotFoundException, IOException
{
     String cadena;
     String resultado = "";
     FileReader f = new FileReader( archivo );
     BufferedReader b = new BufferedReader( f );
     while( ( cadena = b.readLine() ) != null )
     {
         resultado += cadena+"\n";
     }
     b.close();
     return resultado;
}

Calcular salario mensual quitado por baja laboral en Java



//calcula lo que te quita de las bajas de ese mes, le pasas la fecha de inicio de la baja, la fecha de final y lo que debería cobrar ese mes el trabajador. Además hay una variable fechaTeclado, que es la fecha del día uno del mes a calcular
private static double CalcularBajas(Date inicioBaja, Date finBaja, double brutoMensual){
double salarioDiario = brutoMensual/30;
int diasInicioFin = calcularDiasAFecha(inicioBaja, finBaja);

if(inicioBaja.getMonth()==fechaTeclado.getMonth()){
int diasEntreFechas = calcularDiasAFecha(inicioBaja, ponerDiasFechaFinMes(fechaTeclado));
if(diasInicioFin<diasEntreFechas){
return dineroBaja(salarioDiario, diasInicioFin);
}else{
return dineroBaja(salarioDiario, diasEntreFechas);
}



}else if(fechaTeclado.after(inicioBaja) && finBaja==null ){
int diasPrimerMes = calcularDiasAFecha(inicioBaja, ponerDiasFechaFinMes(inicioBaja));

if(fechaTeclado.getMonth()-1==inicioBaja.getMonth()){
int diasSegundoMes = calcularDiasAFecha(fechaTeclado, ponerDiasFechaFinMes(fechaTeclado));
if(diasPrimerMes<3){
return (salarioDiario*(3-diasPrimerMes))/2+(18*salarioDiario)/4;
}else{
return (salarioDiario*(21-diasPrimerMes))/4;
}

}
}else if(fechaTeclado.after(inicioBaja) && fechaTeclado.before(finBaja)){
int diasPrimerMes = calcularDiasAFecha(inicioBaja, ponerDiasFechaFinMes(inicioBaja));

if(fechaTeclado.getMonth()-1==inicioBaja.getMonth()){
int diasSegundoMes = calcularDiasAFecha(fechaTeclado, ponerDiasFechaFinMes(fechaTeclado));
if(diasPrimerMes<3){
return (salarioDiario*(3-diasPrimerMes))/2+(18*salarioDiario)/4;
}else{
return (salarioDiario*(21-diasPrimerMes))/4;
}

}
}





return 0;

}

private static double dineroBaja(double salarioDiario, int diasEntreFechas) {
double dineroQuitadoPorBaja50 = 0;
double dineroQuitadoPorBaja25 = 0;
if(diasEntreFechas>0&&diasEntreFechas<=3){
//50 por ciento
dineroQuitadoPorBaja50 = (salarioDiario*diasEntreFechas)/2;
}else if (diasEntreFechas>3&&diasEntreFechas<21){
//50 y 25 por ciento
dineroQuitadoPorBaja50 = (salarioDiario*3)/2;
dineroQuitadoPorBaja25 = (salarioDiario*(diasEntreFechas-3))/4;
}else if(diasEntreFechas>20){
//50, 25 y 0 por ciento
dineroQuitadoPorBaja50 = (salarioDiario*3)/2;
dineroQuitadoPorBaja25 = (salarioDiario*(17))/4;
}

return dineroQuitadoPorBaja25+dineroQuitadoPorBaja50;
}



private static Date ponerDiasFechaFinMes(Date fecha){

     Calendar calendar = Calendar.getInstance();
     calendar.setTime(fecha); // Configuramos la fecha que se recibe
     //calendar.set(Calendar.DAY_OF_YEAR, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
     int dias = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
     Date aux = calendar.getTime();
     Date ret = new Date(aux.getYear(), aux.getMonth(), dias);
   
     return ret; // Devuelve el objeto Date con los nuevos días añadidos
}

Leer fecha por teclado


//pasa la fecha de String a Date para la fecha leida por teclado
private static Date convertirFechaLectura(String fecha){
                        //Formato de la fecha a convertir
SimpleDateFormat formato = new SimpleDateFormat("MM/yyyy");
Date dat = null;
try{
dat=formato.parse(fecha);
}catch(ParseException ex){

}
return dat;
}


//leer entradas del teclado
private static void lecturaTeclado(){
Scanner lee=new Scanner(System.in);//lector
System.out.println("formato fecha "
+ "MM/yyyy -Ej.:03/2016: ");
String fl=lee.next();//leer fecha
fechaTeclado = convertirFechaLectura(fl);//pasar fecha a date
}



Formato de fechas:

Dentro del SimpleDateFormat puedes meter la forma en la que introduces la fecha.
Ejemplo:
"yyyyy-mm-dd hh:mm:ss"
y - dígito del año.
m - dígito del mes en formato numérico.
d - dígito del día del mes (si el día es por ejemplo el 1 se introducirá como 01)
h - dígito de la hora del día
m - dígito del minuto
s - dígito del segundo

Dependiendo del SampleDateFormat el formato del Date es distinto:
   String date_s = " 2011-01-18 00:00:00.0";
   SimpleDateFormat dt = new SimpleDateFormat("yyyyy-mm-dd hh:mm:ss");
   Date date = dt.parse(date_s);
   SimpleDateFormat dt1 = new SimpleDateFormat("yyyyy-mm-dd");
   System.out.println(dt1.format(date));

Convertir un DNI extranjero a int en Java

public static int conversionDni(String dni){
String nuevoDni = "";
switch(dni.charAt(0)){
case 'X':
nuevoDni="0"+dni.substring(1,dni.length());
break;
case 'Y':
nuevoDni="1"+dni.substring(1,dni.length());
break;
case 'Z':
nuevoDni="2"+dni.substring(1,dni.length());
break;
default:
nuevoDni=dni;
break;
}
return Integer.parseInt(nuevoDni);
}

Averiguar la letra del DNI en Java

public static char dniMethod(int numeroDni){
char letra = 0;
int resto = numeroDni%23;
switch(resto){
case 0:
letra='T';
break;
case 1:
letra='R';
break;
case 2:
letra='W';
break;
case 3:
letra='A';
break;
case 4:
letra='G';
break;
case 5:
letra='M';
break;
case 6:
letra='Y';
break;
case 7:
letra='F';
break;
case 8:
letra='P';
break;
case 9:
letra='D';
break;
case 10:
letra='X';
break;
case 11:
letra='B';
break;
case 12:
letra='N';
break;
case 13:
letra='J';
break;
case 14:
letra='Z';
break;
case 15:
letra='S';
break;
case 16:
letra='Q';
break;
case 17:
letra='V';
break;
case 18:
letra='H';
break;
case 19:
letra='L';
break;
case 20:
letra='C';
break;
case 21:
letra='K';
break;
case 22:
letra='E';
break;
}

return letra;

}

Coger la fecha del ultimo día del mes en Java


//método al que le pasas una fecha y te devuelve esa misma fecha pero con el día en el último día del mes.
private static Date ponerDiasFechaFinMes(Date fecha){

     Calendar calendar = Calendar.getInstance();
     calendar.setTime(fecha); // Configuramos la fecha que se recibe
     calendar.set(Calendar.DAY_OF_YEAR, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
     return calendar.getTime(); // Devuelve el objeto Date con los nuevos días añadidos

 }

Sumar los dias introduciodos a un Date en Java

 public Date sumarDiasFecha(Date fecha, int dias){



      Calendar calendar = Calendar.getInstance();

      calendar.setTime(fecha); // Configuramos la fecha que se recibe

      calendar.add(Calendar.DAY_OF_YEAR, dias);  // numero de días a añadir, o restar en caso de días<0

      return calendar.getTime(); // Devuelve el objeto Date con los nuevos días añadidos

 }

Coger el número de días que tiene un mes en java

Calendar cal = new GregorianCalendar(2010, Calendar.JULY, 1);

int days = cal.getActualMaximum(Calendar.DAY_OF_MONTH); // 28
System.out.println(days);

Cifrado y descifrado Winnowing en Java

Esto es una especie de cifrado Winnowing, al cual le pasas el mensaje y una clave numérica.
El mensaje cifrado que devuelve se calcula de la siguiente manera:
-Coge el mensaje. Entre una letra y otra, mete dos letras inútiles de forma aleatoria.
-Cada letra del mensaje se calcula desplazando la letra tantas posiciones como nos dicte la clave numérica.
Para descifrar el mensaje:
-Coge el mensaje, le quita las letras sobrantes y resta a cada letra tantas posiciones como dicte la clave numérica.



public class Winnowing {

private static String alfabeto = "abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQ-RSTUVWXYZáéíóúÁÉÍÓÚ0123456789 _,.;:?!";

public static void main(String[] args) {
// TODO Auto-generated method stub
String a = cifrar("Hola esto es un mensaje de prueba", 3);
String b = descifrar(a, 3);
}

public static String cifrar(String texto, int clave){
int[] msg = pasarTextoNumero(texto);

int[] msgConBasura = new int[msg.length*3];

int contador = 0;
for (int i = 0; i < msg.length; i++) {
int numeroLetra = (msg[i]+clave)%alfabeto.length();
msgConBasura[contador]=numeroLetra;
contador++;
msgConBasura[contador]=getRandomArbitrary(0,alfabeto.length()-1);
contador++;
msgConBasura[contador]=getRandomArbitrary(0,alfabeto.length()-1);
contador++;
}

String sol = "";
for (int i = 0; i < msgConBasura.length; i++) {
int posLetra = msgConBasura[i]-1;
if(posLetra<0){
posLetra=posLetra+alfabeto.length();
}
sol+=alfabeto.charAt(posLetra);
}

System.out.println(sol+" "+msg.length+" "+msgConBasura.length);
return sol;
}

public static String descifrar(String texto, int clave){
int[] msg = pasarTextoNumero(texto);

int[] msgSinBasura = new int[msg.length/3];

for (int i = 0; i < msg.length; i+=3) {
int numeroLetra = msg[i]-clave;
if(numeroLetra<0){
numeroLetra=alfabeto.length()+numeroLetra;
}
msgSinBasura[i/3]=numeroLetra;

}

String sol = "";
for (int i = 0; i < msgSinBasura.length; i++) {
int posLetra = msgSinBasura[i]-1;
if(posLetra<0){
posLetra=posLetra+alfabeto.length();
}
sol+=alfabeto.charAt(posLetra);
}

System.out.println(sol+" "+msg.length+" "+msgSinBasura.length);
return sol;
}

// Retorna un número aleatorio entre min (incluido) y max (excluido)
private static int getRandomArbitrary(int min, int max) {
 return (int) (Math.random() * (max - min) + min);
}

//pasa un String a un int[] con el valor de cada letra en el alfabeto
private static int[] pasarTextoNumero(String mensaje){
int[] secuencia = new int[mensaje.length()];//array con la longitud del mensaje
for (int i = 0; i < secuencia.length; i++) {
char letra = mensaje.charAt(i);
int valor = valorLetra(letra);
secuencia[i]=(valor+1)%alfabeto.length();
}
return secuencia;
}

//devuelve la posicion de la letra en el alfabeto
private static int valorLetra(char letra){
for (int j = 0; j < alfabeto.length(); j++) {
if(letra==alfabeto.charAt(j)){
return j;
}
}
return -1;
}

}

Obtener mes de un Date en Java

public int obtenerMes(Date date){

if (null == date){

return 0;

}
else{

formato="MM";
SimpleDateFormat dateFormat = new SimpleDateFormat(formato);
return Integer.parseInt(dateFormat.format(date));

}

}

Obtener día de un Date en Java

if (null == date){

return 0;

}
else{

formato="dd";
SimpleDateFormat dateFormat = new SimpleDateFormat(formato);
return Integer.parseInt(dateFormat.format(date));

}

Obtener año de un date en Java

if (null == date){

return 0;

}
else{

formato="yyyy";
SimpleDateFormat dateFormat = new SimpleDateFormat(formato);
return Integer.parseInt(dateFormat.format(date));

}

}

Pasar fecha de String a Date con formato MM/YYYY

//pasa la fecha de String a Date para la fecha leida por teclado
private static Date convertirFechaLectura(String fecha){
SimpleDateFormat formato = new SimpleDateFormat("MM/yyyy");
Date dat = null;
try{
dat=formato.parse(fecha);
}catch(ParseException ex){

}
return dat;
}

Coger el dato tamaño de un XML en java

Cuando tienes un juego como el sudoku que tiene un tamaño y lo tienes guardado en un xml, con java puedes coger ese tamaño con este método

private static int comprobarTamaño(String nombre){

try {
File fXmlFile = new File(nombre);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder;
dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);

doc.getDocumentElement().normalize();

return Integer.parseInt(doc.getDocumentElement().getAttributeNode("Tamanio").getValue());


} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block1
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block2doc
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block2doc
e.printStackTrace();
}
return 0;

}

Validar xml en java

private static String validarXML(String ruta) {
String cadena = "";

try {
Source schemaFile = new StreamSource(new File("Schema.xsd"));
Source xmlFile = new StreamSource(new File(ruta));
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(schemaFile);
Validator validator = schema.newValidator();

validator.validate(xmlFile);
cadena="OK";
return cadena;

} catch (SAXException e) {
// Documento erróneo
cadena="Error al validarlo.";
File archivo = new File(ruta);
archivo.delete();
System.out.println(e.toString()+"<br>");
} catch (IOException e) {
e.printStackTrace();
}

return cadena;
}

Lerr fichero en Java

public static void muestraContenido(String archivo) throws FileNotFoundException, IOException {
        String cadena;
        FileReader f = new FileReader(archivo);
        BufferedReader b = new BufferedReader(f);
        while((cadena = b.readLine())!=null) {
            System.out.println(cadena);
        }
        b.close();
    }


La llamada a este método se realiza de la siguiente forma:
muestraContenido("archivo.txt");


En lugar de un  'System.out.println(cadena);' se puede hacer un ArrayList y con .add(cadena), ir guardándolos para posteriormente usarlo.

Escribir ficheros en Java

File fichero = new File ("fichero.txt");
try {
//Crear objeto FileWriter que sera el que nos ayude a escribir sobre archivo
FileWriter escribir=new FileWriter(fichero,true);


//Escribimos en el archivo con el metodo write

escribir.write("holaa\nmundo");


//Cerramos la conexion
escribir.close();

} catch (Exception ex) {
System.out.println(ex.getMessage());
}

Numero de meses entre dos fechas en java

public static int calcularMesesAFecha(Date fechaInicio, Date fechaFin) {
       try {
           //Fecha inicio en objeto Calendar
           Calendar startCalendar = Calendar.getInstance();
           startCalendar.setTime(fechaInicio);
           //Fecha finalización en objeto Calendar
           Calendar endCalendar = Calendar.getInstance();
           endCalendar.setTime(fechaFin);
           //Cálculo de meses para las fechas de inicio y finalización
           int startMes = (startCalendar.get(Calendar.YEAR) * 12) + startCalendar.get(Calendar.MONTH);
           int endMes = (endCalendar.get(Calendar.YEAR) * 12) + endCalendar.get(Calendar.MONTH);
           //Diferencia en meses entre las dos fechas
           int diffMonth = endMes - startMes;
           return diffMonth;
       } catch (Exception e) {
           return 0;
       }
}

Conversor de fecha en Java

private static Date convertirFecha(String fecha){
SimpleDateFormat formato = new SimpleDateFormat("dd-MMM-yyyy");
Date dat = null;
try{
dat=formato.parse(fecha);
}catch(ParseException ex){

}
return dat;
}

Coger IP local y IP de una URL java

import java.net.InetAddress;

/**
 *
 * @author
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)  throws Exception {
        // Aqui obtenemos la ip local de la maquina
        InetAddress address = InetAddress.getLocalHost();
        System.out.println("IP Local :"+address.getHostAddress());

        // Aqui obtenemos la ip de la web del programador
        String domain="www.google.es";
        InetAddress address2 = InetAddress.getByName(domain);
        byte IP[] = address2.getAddress();
        System.out.print("IP del dominio "+domain+" :");
        for (int index = 0; index < IP.length; index++)
        {
           if (index > 0)
                 System.out.print(".");
           System.out.print(((int)IP[index])& 0xff);
        }
    }
}