Jump to content

acceder a datos de otra clase JAVA


Recommended Posts

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

-_- 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

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 by bersek
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...