elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Error en llamada a metodo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error en llamada a metodo  (Leído 3,265 veces)
m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
Error en llamada a metodo
« en: 13 Mayo 2012, 01:12 am »

Saludos
 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
  1. public class Impuestos {
  2. //variables globales de uso interno del programa
  3. final int MESES=12;
  4. int mes_elegido=1;
  5. String meses[]=new String[MESES];
  6. double rango_monto[][]=new double[3][2];
  7. int porcentaje_ISR[]=new int[3];
  8. //Arreglo de ingresos y gastos
  9. final double ingresos[]=new double[MESES];
  10. final double gastos[]=new double[MESES];
  11. final double IVA=16.0;
  12. final double POR_RET_IVA=10.0;
  13. final double POR_RET_ISR=10.0;
  14. public void inicializa(String meses[],double rango_monto[][],int porcentaje_ISR[]){
  15. this.meses[0]="Enero";
  16. this.meses[1]="Febrero";
  17. this.meses[2]="Marzo";
  18. this.meses[3]="Abril";
  19. this.meses[4]="Mayo";
  20. this.meses[5]="Junio";
  21. this.meses[6]="Julio";
  22. this.meses[7]="Agosto";
  23. this.meses[8]="Septiembre";
  24. this.meses[9]="Octubre";
  25. this.meses[10]="Noviembre";
  26. this.meses[11]="Diciembre";
  27. this.rango_monto[0][0]=0;
  28. this.rango_monto[0][1]=10000.00;
  29. this.rango_monto[1][0]=10000.00;
  30. this.rango_monto[1][1]=20000.00;
  31. this.rango_monto[2][0]=20000.00;
  32. this.rango_monto[2][1]=10000000.00;
  33. this.porcentaje_ISR[0]=11;
  34. this.porcentaje_ISR[1]=15;
  35. this.porcentaje_ISR[2]=20;
  36. }
  37.  
  38. public double monto(double gan_bruta)
  39. {
  40. double por_isr;
  41. if((gan_bruta>rango_monto[0][0])&&(gan_bruta<=rango_monto[1][0]))
  42. por_isr= porcentaje_ISR[0];
  43. else
  44. if((gan_bruta>rango_monto[1][0])&&(gan_bruta<=rango_monto[2][0]))
  45. por_isr= porcentaje_ISR[1];
  46. else
  47. if(gan_bruta>rango_monto[2][0])
  48. por_isr= porcentaje_ISR[2];
  49. else
  50. por_isr=0;
  51.  
  52. return(por_isr);
  53. }
  54.  
  55. public static void main(String[] args) {
  56. //constantes
  57. final int CAPTURA_MES=1;
  58. final int CAP_INGRESO=2;
  59. final int CAP_GASTOS=3;
  60. final int L_INGR_ANUALES=4;
  61. final int L_GAST_ANUALES=5;
  62. final int CALC_IMPUESTOS=6;
  63. final int SALIR=7;
  64. final int MESES=12;
  65. //variables globales de uso interno del programa
  66. String meses[]=new String[MESES];
  67. int porcentaje_ISR[]=new int[3];
  68. double rango_monto[][]=new double[3][2];
  69. //variables del programa modificables por el usuario
  70. Impuestos c=new Impuestos();
  71. c.inicializa(meses,rango_monto,porcentaje_ISR);
  72. int opcion;
  73. boolean continuar = true;
  74. do
  75. {
  76. c.mostrarMenu();
  77. opcion=ScanF.leeInt();
  78. System.out.println(" "+opcion);
  79. switch(opcion)
  80. {
  81. case CAPTURA_MES:
  82. c.capturaMes();
  83. break;
  84. case CAP_INGRESO:
  85. c.capturaIngreso();
  86. break;
  87. case CAP_GASTOS:
  88. c.capturaGasto();
  89. break;
  90. case L_INGR_ANUALES:
  91. c.listaIngresoAnual();
  92. break;
  93. case L_GAST_ANUALES:
  94. c.listaGastoAnual();
  95. break;
  96. case CALC_IMPUESTOS:
  97. c.calculoImpuestos();
  98. break;
  99. case SALIR:
  100. continuar = false;
  101. break;
  102. default:System.out.println("Opcion no valida!");
  103. }
  104. if(continuar){
  105. System.out.println("Presione tecla para continuar...");
  106.  
  107. }
  108. }while(continuar);
  109. }
  110.  
  111. void capturaMes()
  112. {
  113. System.out.println("Establecer mes para captura");
  114. for(int i=0,indice=0;i<MESES;i++,indice++)
  115. System.out.printf("%d) %s\n",indice+1,meses[i]);
  116. System.out.println("Elige el mes (1 a 12):");
  117. mes_elegido=ScanF.leeInt();
  118. System.out.println(" "+mes_elegido);
  119. if(mes_elegido > MESES)
  120. System.out.println("Mes no valido!");
  121. else
  122. System.out.println("Se ha establecido el mes de captura en "+meses[mes_elegido-1]);
  123. }
  124. public void capturaIngreso()
  125. {
  126. float ingreso;
  127. System.out.println("Captura ingresos");
  128. System.out.printf("Dame el ingreso del mes de "+meses[mes_elegido-1]+":");
  129. ingreso=ScanF.leeInt();
  130. System.out.println(" "+ingreso);
  131. ingresos[mes_elegido-1] = ingreso;
  132. }
  133.  
  134. public void capturaGasto()
  135. {
  136. float gasto;
  137. System.out.println("Captura gastos");
  138. System.out.printf("Dame el gasto del mes de %s: ",meses[mes_elegido-1]);
  139. gasto=ScanF.leeInt();
  140. System.out.println(" "+gasto);
  141. gastos[mes_elegido-1] = gasto;
  142. }
  143.  
  144. void listaIngresoAnual()
  145. {
  146. System.out.println("Mostrar lista de ingresos anual");
  147. for(int i=0;i<MESES;i++)
  148. System.out.println(" "+meses[i]+" = "+ingresos[i]);
  149. }
  150.  
  151. void listaGastoAnual()
  152. {
  153. System.out.println("Mostrar lista de gastos anual");
  154. for(int i=0;i<MESES;i++)
  155. System.out.println(" "+meses[i]+" = "+gastos[i]);
  156. }
  157.  
  158. void calculoImpuestos()
  159. {
  160. Impuestos r=new Impuestos();
  161. double iva,subtotal,ret_isr,ret_iva,total,gan_bruta,isr,gan_neta,isr_pag,gasto_iva,iva_pag;
  162. double  por_isr,ingreso_tot=0,gasto_tot=0;
  163.  
  164. for(int i=0;i<MESES;i++)
  165. {
  166. ingreso_tot+=ingresos[i];
  167. gasto_tot+=gastos[i];
  168. }
  169.  
  170. iva=(ingreso_tot*IVA)/100;
  171. subtotal=ingreso_tot+iva;
  172. ret_isr=(ingreso_tot*POR_RET_ISR)/100;
  173. ret_iva=(ingreso_tot*POR_RET_IVA)/100;
  174. total=subtotal-(ret_isr+ret_iva);
  175. gan_bruta=(ingreso_tot-gasto_tot);
  176. por_isr=r.monto(gan_bruta);
  177. isr=(gan_bruta*por_isr)/100;
  178. gan_neta=(gan_bruta-isr);
  179. isr_pag=(isr-ret_isr);
  180. gasto_iva=(gasto_tot*IVA)/100;
  181. iva_pag=(iva-gasto_iva-ret_iva);
  182. System.out.println("CALCULO DE IMPUESTOS");
  183.  
  184. System.out.println("***Tabla de Recibo de Honorarios***");
  185. System.out.println("Ingresos\t\t"+ingreso_tot);
  186. System.out.println("(+) IVA\t\t\t"+iva);
  187. System.out.println("(=) Subtotal\t\t"+subtotal);
  188. System.out.println("(-) Retención ISR\t"+ret_isr);
  189. System.out.println("(-) Retención IVA\t"+ret_iva);
  190. System.out.println("(=) Total\t\t"+total);
  191. System.out.println("***Tabla Ganancias***");
  192. System.out.println("Ingresos\t\t"+ingreso_tot);
  193. System.out.println("(-) Gastos\t\t"+gasto_tot);
  194. System.out.println("(=) Ganancia Bruta\t"+gan_bruta);
  195. System.out.println("(-) ISR "+por_isr+"%\t\t"+isr);
  196. System.out.println("(=) Ganancia Neta\t"+gan_neta);
  197. System.out.println("***Tabla ISR***");
  198. System.out.println("ISR "+por_isr+"%\t\t"+isr);
  199. System.out.println("(-) ISR Retenido\t"+ret_isr);
  200. System.out.println("(=) ISR a Pagar\t\t"+isr_pag);
  201. System.out.println("***Tabla IVA***");
  202. System.out.println("IVA\t\t\t"+iva);
  203. System.out.println("(-) Gastos IVA\t\t"+gasto_iva);
  204. System.out.println("(-) Retención IVA\t"+ret_iva);
  205. System.out.println("(=) IVA a Pagar\t\t"+iva_pag);
  206. }
  207. void mostrarMenu()
  208. {
  209. System.out.println("CALCULO DE IMPUESTOS ANUAL");
  210.  
  211. System.out.println("Menu principal:");
  212. System.out.println("1. Establecer mes para la captura (mes actual es "+meses[mes_elegido-1]+")");
  213. System.out.println("2. Captura de ingresos");
  214. System.out.println("3. Captura de gastos");
  215. System.out.println("4. Mostrar lista de ingresos anual");
  216. System.out.println("5. Mostrar lista de gastos anual");
  217. System.out.println("6. Calculo de impuestos anual");
  218. System.out.println("7. Salir");
  219.  
  220. System.out.println("Opcion: ");
  221. }
  222. }
  223.  

el error esta en la siguiente linea

Código
  1. System.out.println("(-) ISR "+por_isr+"%\t\t"+isr);

y no se si se deba a que en la llamada a método estoy haciendo algo indebido
Código
  1. por_isr=r.monto(gan_bruta);

de antemano gracias


En línea

[Case]


Desconectado Desconectado

Mensajes: 474



Ver Perfil WWW
Re: Error en llamada a metodo
« Respuesta #1 en: 13 Mayo 2012, 08:21 am »

Error en que sentido? Que el metodo no hace lo que quieres? o el metodo falla y hace que termine el programa?


En línea

m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
Re: Error en llamada a metodo
« Respuesta #2 en: 13 Mayo 2012, 18:33 pm »

No, el codigo compila bien hace lo que le pido a excepción de esa parte, cuando imprime el ISR
En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Error en llamada a metodo
« Respuesta #3 en: 13 Mayo 2012, 18:52 pm »

has revisado tu lógica? tus operaciones? las asignaciones si se hacen en los momentos correctos? El flujo de ejecución está un poco enredado, y por eso mismo es un poco molesto revisarlo y seguirlo linea a linea. Y bueno estás usando Java un lenguaje orientado a objetos como si fuera un lenguaje estructurado. Revisa las abstracciones que necesitas y el diseño que estás usando.

Espero sea de ayuda.

Saludos
En línea

[Case]


Desconectado Desconectado

Mensajes: 474



Ver Perfil WWW
Re: Error en llamada a metodo
« Respuesta #4 en: 14 Mayo 2012, 01:03 am »

Pues si es cierto esto parece programacion estruturada en todo sentido, seria bueno que intentaras aprovechar el paradigma del lenguaje.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda para quitar una firma. Método XOR, MEEPA y error de acess violation.
Análisis y Diseño de Malware
ccjrocks 4 3,863 Último mensaje 9 Julio 2013, 02:44 am
por The Swash
Consulta sobre llamada a un metodo
Java
kurupi13 2 2,270 Último mensaje 1 Octubre 2013, 21:39 pm
por kurupi13
Por que me da error? ( declarar api y realizar llamada )
Programación C/C++
70N1 4 2,976 Último mensaje 21 Diciembre 2014, 14:03 pm
por 70N1
Error llamada recursiva Puntero C
Programación C/C++
aisak77 2 1,847 Último mensaje 30 Enero 2017, 13:44 pm
por Kenji-chan
¿Por qué es ambigua la llamada a este método?
Programación C/C++
Repikas 1 2,946 Último mensaje 26 Junio 2017, 14:43 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines