Jhack15 Posted March 8, 2011 Report Share Posted March 8, 2011 BUENO AMIGOS, lo que quiero es que la clase visualizar acceda a los archivos de la clase modificar este es el codigo fuente mi idea es q en la clase visualizar con los datos ya ingresador a la clase modificar , esta solo los obtengas y los mande a imprimir el codigo esta bueno todo marcha bien pero no tengo idea de como hacer eso q les digo public class Nomina { public static void modificar ()throws IOException{ int id[]; String nombre[]; String cargo[]; double salariobasico[]; int horasXtra[]; double pagoXhora[]; double totalhoras[];//horasxtra * pagoXhora double totalsalario[]; double salarioanual[]; double inss[];//6.25*salariobasico double ir[];//totalsalario double insspatronal[];//15*totalsalario double totaldeducciones[];//inss + ir + insspatronal double neto[];//totalsalario - inss - ir int i; int x;//lo ocupa para asignarle valores int double y;//lo ocupa para asignarle valores tipo double int temp = 0;//lo ocupa para asignarle tamaño String nom= null;//lo ocupa para asignarle valores tipo String //pido al usuario cantidad de usuarios, hago validacion System.out.println("******************************************************"); System.out.println("******************************************************"); System.out.println("******************REGISTRO DE NOMINA******************"); System.out.println("******************************************************"); do{ System.out.println("¿Cuantos usuarios desea registrar?"); temp=testdigit.Entero(); if (temp<0);{System.out.println("\n");} }while (temp<0); //inicializo el array id y demas - le asigno su debido tamaño id= new int[temp]; nombre= new String[temp]; cargo= new String [temp]; salariobasico= new double[temp]; salarioanual= new double [temp]; horasXtra=new int[temp]; pagoXhora=new double[temp]; totalhoras=new double[temp]; totalsalario=new double[temp]; inss=new double [temp]; ir=new double[temp]; insspatronal=new double[temp]; totaldeducciones=new double[temp]; neto=new double [temp]; //Pido los datos del trabajor for (i=0;i<id.length;i++){//abre ciclo for do{ System.out.println("ID del Trabajador"); x=testdigit.Entero(); } while(x<0); id=x; System.out.println("Nombre y Apellido del Empleado"); nom=testdigit.getString(); nombre=nom; System.out.println("Escriba el cargo del Empleado"); nom=testdigit.getString(); cargo=nom; do{ System.out.println("Escriba el salario Básico de "+nombre+" ="); y=testdigit.Double(); }while ( y<0); salariobasico= y; do{ System.out.println("¿Cuantas horas Extras realizó "+nombre+" ="); x=testdigit.Entero(); }while (x<0); horasXtra=x; //calculando pagoXhora y=(salariobasico/8)*horasXtra*2; pagoXhora=y; //calculando totalhoras totalhoras= horasXtra*pagoXhora; //calculando total salario totalsalario= salariobasico + totalhoras; //calculando inss 6.25% inss=salariobasico*0.0625; //calculando IR salarioanual= salariobasico*12; if(salarioanual<=75000 && salarioanual>=1){ ir=salariobasico*0; }else if (salarioanual>75000 && salarioanual<=100000){ ir= salariobasico*0.10; }else if (salarioanual>100000 && salarioanual<=200000){ ir= salariobasico*0.15; }else if (salarioanual>200000 && salarioanual<=300000){ ir= salariobasico*0.20; }else if (salarioanual>300000 && salarioanual<=500000){ ir=salariobasico*0.25; }else if (salarioanual>500000){ ir= salariobasico* 0.30; } //calculando INSS patronal insspatronal=totalsalario*0.15; //calculando totaldeducciones totaldeducciones= inss+ir+insspatronal; //calculando neto neto= totalsalario-inss-ir; }//cierra ciclo for }//cierra el metodo modificar public static void visualizar ()throws IOException{ System.out.println("*******************************************************"); System.out.println("*******************************************************"); System.out.println("**********************NOMINA 2011**********************"); System.out.println("*******************************************************"); System.out.println("ID\tNOMBRE Y APELLIDO\t\tSALARIO BÁSICO\tHrs EXTRAS\tPRECIO H/Ex\tTOTAL Hrs. Extra\tINSS\tI.R.\tINSS PATRONAL\tTOTAL DEDUCCIONES\tSALARIO NETO"); } } Link to comment Share on other sites More sharing options...
rvega77 Posted March 9, 2011 Report Share Posted March 9, 2011 -_- lo que tienes que investigar es sobre el "ámbito" (scope) de las variables... <_< también debes referirte correctamente a los "partes de tu código" cuando planteas la pregunta... Cuando dices: la clase modificar, te refieres al Metodo modificar (igualmente con visualizar) Pero bueno: Ejemplo 1: variables de ambito "local" (esto es lo que tienes en tu codigo) public class AmbitoVariables { public void metodo(){ String saludo = "Hola"; // <-- Variable local, solo "vive" mientras se ejecuta el metodo } public void otroMetodo(){ System.out.println( saludo ); // <-- error de compilacion, la variable saludo "no existe" en este ambito } } Ejemplo 2: variables a nivel de clase, son "accesibles" por todos los metodos (esto debes aplicar tu) public class AmbitoVariables2 { private String saludo = "Hola"; // <-- Variable a nivel de clase, se conocen como "atributos" public void metodo(){ saludo = "Chao"; // <-- se puede modificar por este metodo } public void otroMetodo(){ System.out.println( saludo ); // <-- se puede "imprimir" por este otro metodo } } :paco: Para tu caso, debes anteponer la palabra static cuando muevas las variables del método modificar... Saludos :paco: Supongo que tiene algún fin "pedagógico" el que utilices tantos arreglos de primitivos... ... pero debo decir que tu código no esta "Orientado a Objetos" Link to comment Share on other sites More sharing options...
bersek Posted March 11, 2011 Report Share Posted March 11, 2011 (edited) Primero: yo veo que modificar y visualizar no son clases sino métodos (no sé si te equivocaste o no entiendes bien los conceptos) Segundo: como dice rvega77 tu pregunta tiene que ver con el ámbito de las variables, no puedes usar variables locales fuera del método donde se declaran (no voy a poner ejemplos porque ya los pusieron: :ROLF: ) por lo tanto para hacer que se muestren los datos tienes varias opciones -una opción seria pasar los array como parámetros al método modificar lo cual no es una buena practica imagínate pasando 14 arreglos como parámetros O_o -otra opción es dejar los arreglos como variables de instancia para que de esta forma puedas acceder a ellas desde cualquier método (Es mejor opción que la anterior pero tampoco es muy recomendable). Para cualquier opción que tomes el siguiente paso es recorrer los arreglos con un bucle y mostrar los datos Lo mejor que puedes hacer es darle un poco de orientación a objetos a tu código y es rehacerlo, quizás hacer un clase trabajador con los respectivos atributos privados como : nombre, salario, hora extras...etc, crear sus respectivos getter y setter (puedes hacer el uso de la herencia aquí si es que hay más de un cargo ) y los métodos que calculen el salario Luego por cada trabajador, crear un objeto y guardarlo en un arrayList o en un array, entonces cuando quieras mostrar los datos de los trabajadores lo único que tienes que hacer es recorrer el arrayList mostrando los datos si tienes alguna duda pregunta noma :paco: Edited March 11, 2011 by bersek Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now