Tengo el siguiente codigo que me calcula los impuestos(ISR, IVA,etc...) de los ingresos y gatos que le voy ingresando de acuerdo al mes que se elija, pero en el método calculaImpuestos cuando me imprime ISR(por_isr) me lo imprime en 0, cuando deberia ser 11%, 15% o 20% de acuerdo al rango en el que se encuentre
Código
public class Impuestos { //variables globales de uso interno del programa final int MESES=12; int mes_elegido=1; double rango_monto[][]=new double[3][2]; int porcentaje_ISR[]=new int[3]; //Arreglo de ingresos y gastos final double ingresos[]=new double[MESES]; final double gastos[]=new double[MESES]; final double IVA=16.0; final double POR_RET_IVA=10.0; final double POR_RET_ISR=10.0; this.meses[0]="Enero"; this.meses[1]="Febrero"; this.meses[2]="Marzo"; this.meses[3]="Abril"; this.meses[4]="Mayo"; this.meses[5]="Junio"; this.meses[6]="Julio"; this.meses[7]="Agosto"; this.meses[8]="Septiembre"; this.meses[9]="Octubre"; this.meses[10]="Noviembre"; this.meses[11]="Diciembre"; this.rango_monto[0][0]=0; this.rango_monto[0][1]=10000.00; this.rango_monto[1][0]=10000.00; this.rango_monto[1][1]=20000.00; this.rango_monto[2][0]=20000.00; this.rango_monto[2][1]=10000000.00; this.porcentaje_ISR[0]=11; this.porcentaje_ISR[1]=15; this.porcentaje_ISR[2]=20; } public double monto(double gan_bruta) { double por_isr; if((gan_bruta>rango_monto[0][0])&&(gan_bruta<=rango_monto[1][0])) por_isr= porcentaje_ISR[0]; else if((gan_bruta>rango_monto[1][0])&&(gan_bruta<=rango_monto[2][0])) por_isr= porcentaje_ISR[1]; else if(gan_bruta>rango_monto[2][0]) por_isr= porcentaje_ISR[2]; else por_isr=0; return(por_isr); } //constantes final int CAPTURA_MES=1; final int CAP_INGRESO=2; final int CAP_GASTOS=3; final int L_INGR_ANUALES=4; final int L_GAST_ANUALES=5; final int CALC_IMPUESTOS=6; final int SALIR=7; final int MESES=12; //variables globales de uso interno del programa int porcentaje_ISR[]=new int[3]; double rango_monto[][]=new double[3][2]; //variables del programa modificables por el usuario Impuestos c=new Impuestos(); c.inicializa(meses,rango_monto,porcentaje_ISR); int opcion; boolean continuar = true; do { c.mostrarMenu(); opcion=ScanF.leeInt(); switch(opcion) { case CAPTURA_MES: c.capturaMes(); break; case CAP_INGRESO: c.capturaIngreso(); break; case CAP_GASTOS: c.capturaGasto(); break; case L_INGR_ANUALES: c.listaIngresoAnual(); break; case L_GAST_ANUALES: c.listaGastoAnual(); break; case CALC_IMPUESTOS: c.calculoImpuestos(); break; case SALIR: continuar = false; break; } if(continuar){ } }while(continuar); } void capturaMes() { for(int i=0,indice=0;i<MESES;i++,indice++) mes_elegido=ScanF.leeInt(); if(mes_elegido > MESES) else } public void capturaIngreso() { float ingreso; ingreso=ScanF.leeInt(); ingresos[mes_elegido-1] = ingreso; } public void capturaGasto() { float gasto; gasto=ScanF.leeInt(); gastos[mes_elegido-1] = gasto; } void listaIngresoAnual() { for(int i=0;i<MESES;i++) } void listaGastoAnual() { for(int i=0;i<MESES;i++) } void calculoImpuestos() { Impuestos r=new Impuestos(); double iva,subtotal,ret_isr,ret_iva,total,gan_bruta,isr,gan_neta,isr_pag,gasto_iva,iva_pag; double por_isr,ingreso_tot=0,gasto_tot=0; for(int i=0;i<MESES;i++) { ingreso_tot+=ingresos[i]; gasto_tot+=gastos[i]; } iva=(ingreso_tot*IVA)/100; subtotal=ingreso_tot+iva; ret_isr=(ingreso_tot*POR_RET_ISR)/100; ret_iva=(ingreso_tot*POR_RET_IVA)/100; total=subtotal-(ret_isr+ret_iva); gan_bruta=(ingreso_tot-gasto_tot); por_isr=r.monto(gan_bruta); isr=(gan_bruta*por_isr)/100; gan_neta=(gan_bruta-isr); isr_pag=(isr-ret_isr); gasto_iva=(gasto_tot*IVA)/100; iva_pag=(iva-gasto_iva-ret_iva); } void mostrarMenu() { } }
el error esta en la siguiente linea
Código
y no se si se deba a que en la llamada a método estoy haciendo algo indebido
Código
por_isr=r.monto(gan_bruta);
de antemano gracias