Que en paz descanse: CODIGO JAVA TABLA DE AMORTIZACIONES
Tienes cuenta en Blogger? Entonces entra.

Una vez hayas entrado, vuelve!

2005-12-13

CODIGO JAVA TABLA DE AMORTIZACIONES

Siguiendo con esta orgia de codigo Java inservible para nada mas que a los estudiantes de Informatica, ahora presento el siguiente caso: Un codigo capaz de entregar una tabla de amortizacion debidamente formateada en sus detalles numericos (con solo dos decimales) y que debe obtenerse a partir de algunos valores basicos entregados via entrada estandar (teclado) por le usuario: Tasa de Interes, Valor Cuota, Deuda Original, Fecha de Inicio y Tiempo de Pago.

import java.text.DecimalFormat;
import java.io.*;

public class CalculoCredito {
  /**
  * Todos los atributos 'double' seran formateados
  * para que aparescan con solo dos cifras despues de la coma.
  */
  public DecimalFormat DoubleFormat = new DecimalFormat("0.00");
 
  /**
  * Definicion de Variables
  */
  public double credito;
  public double tasa;
  public double cuota;
  public double intereses;
  public double amortiz;
  public double resto;
  public double cuotaSUM;
  public double interesSUM;
  public double amortizSUM;
  public int anyo;
  public int mes;
  public int tiempo;
 
  CalculoCredito(double startCredito, double laCuota,
      double tasaSatz, int startMes, int startAnyo,
      int laufTiempo) {
      credito = resto = startCredito;
      tiempo = laufTiempo;
      tasa = tasaSatz;
      cuota = laCuota;
      mes = startMes;
      anyo = startAnyo;
      interes = amortiz = 0.0;
  }

  public static void main(String[] args) throws IOException {
      int error = 1;
      do {
          try {
              CalculoCredito CreditoCuotas = new
              CalculoCredito(Input( "Total Credito" ),
              Input( "Cuota ( Credito > Cuota > 0 )" ),
              Input( "Tasa de Interes ( 0 - 100 )" ),
              ( int )Input( "Mes ( 1 - 12 )" ),
              ( int )Input( "Anyo ( => 2006 )" ),
              ( int )Input( "Periodo de Tiempo ( en Anyos => 1 )" ) );
              CreditoCuotas.checkEntradas();
              CreditoCuotas.printHeader();

              do {
                  CreditoCuotas.resultado();
              } while ( CreditoCuotas.resto > 0.0 );
              error = 0;
          }
          catch ( Except e ) {
              System.out.println( e.toString() );
          }
          catch ( NumberFormatException e ) {
              System.out.println( "Por Favor Hagalo Bien!\n" +
              "Por Favor, intentelo Nuevamente.\n" +
              "===============================\n\n" );
          }
      } while (error == 1);
  }

  public static double Input( String s ) throws IOException,
    NumberFormatException {
    BufferedReader Input = new BufferedReader (
      new InputStreamReader( System.in ));
      System.out.print( "Por favor ingrese " + s );
      String InputString = Input.readLine();
      return Double.parseDouble( InputString );
  }

  public void printHeader() {
    System.out.println("\n\nCalculo de Tasa de Amortizacion con "
        + "Cuotas de Igual Valor\n" +
        "Tasa nominal: \t" + DoubleFormat.format( tasa ) +
        "%\tCredito Inicial: " + DoubleFormat.format( credito ) +
        " EUR\n" + "Tiempo: \t\t" + tiempo +
        " Anyo(s)\tInicio: \t" + mes + "/" + anyo + "\n\n" +
        "Mes" + "\t" + "Cuota"+"\t\t" + "Intereses" +
        "\t\t" + "Amortizacion" + "\t\t" + "Resto");
  }

  public void print() {
    if ( mes >= 10 ) {
        System.out.println( mes + "." + anyo + "\t\t" +
            DoubleFormat.format( cuota ) + " EUR\t\t" +
            DoubleFormat.format( interes ) + " EUR\t\t" +
            DoubleFormat.format( amortiz ) + " EUR\t\t" +
            DoubleFormat.format( resto ) + " EUR");
    } else {
        System.out.println(" " + mes + "." + anyo + "\t\t" +
            DoubleFormat.format( cuota ) + " EUR\t\t" +
            DoubleFormat.format( interes ) + " EUR\t\t" +
            DoubleFormat.format( amortiz ) + " EUR\t\t" +
            DoubleFormat.format( resto ) + " EUR");
    }
  }

  public void resultados() {
      if (zinsen != 0.0)
        monat++;
      if (mes > 12) {
        mes = 1;
        anyo++;
        System.out.println("Summen: \t" +
        DoubleFormat.format( cuotaSUM ) + " EUR\t\t" +
        DoubleFormat.format( interesSUM ) + " EUR\t\t" +
        DoubleFormat.format( amortizSUM ) + " EUR\t\t p.a.\n\n" +
        "Zahlmonat" + "\t" + "Rate"+"\t\t" + "Zinsen" +
        "\t\t" + "Tilgung" + "\t\t" + "Rest");
ratenSUM = zinsenSUM = tilgungSUM = 0;
      }

// zinsen = (int)(rest * zins / 12.0 + 0.5) / 100.0;
zinsen = (int)(rest * zins) / 1200.0;
tilgung = rate - zinsen;
rest = rest - tilgung;
ratenSUM += rate;
zinsenSUM += zinsen;
tilgungSUM += tilgung;
if (rest > 0.0) {
print();
      } else {
System.out.println("Summen: \t" +
DoubleFormat.format(ratenSUM) + " EUR\t\t" +
DoubleFormat.format(zinsenSUM) + " EUR\t\t" +
DoubleFormat.format(tilgungSUM) + " EUR\t\t p.a.\n\n");
      }
}

public void checkEntradas() throws Except {
      if(kredit <= 0.0)
throw new Except("\n\nSie sollten einen sinnvollen Kredit " +
"angeben!\nBitte versuchen Sie nochmal.\n" +
"=======================================\n\n");
      if(kredit <= rate)
throw new Except("\n\nSie sollten eine sinnvolle Rate " +
"angeben!\nBitte versuchen Sie nochmal.\n" +
"======================================\n\n");
      if(zins <= 0.0 || zins >= 100.0)
throw new Except("\n\nSie sollten einen sinnvollen Zinssatz " +
"angeben!\nPor Favor Intente de nuevo.\n" +
"=========================================\n\n");
      if(monat < 0 || monat > 12 || jahr < 2006)
throw new Except("\n\nDebe Ingresar un Valor Correcto Para Fecha" +
"!\nPor Favor Intente de nuevo.\n" +
"==========================================\n\n");
      if(zeit <= 0)
throw new Except("\n\nDebe Ingresar un Valor Correcto Para " +
"Tiempo!\nPor Favor Intente de nuevo.\n" +
"=========================================\n\n");
}
}

class Except extends Exception {
private String s;

public Except(String e) {
s = e;
}

public String toString() {
return s;
    }
  }


1 comentarios:

Lex dijo...

Hola; tengo un problema con las variables (con la mayoría), me tira errores por ellas.