![](/img/trans.png)
[英]How to update and use an object in main() from another thread class in java
[英]Java: how to use an object from another class
因此,我有三個類: TesteFuncionario
, Funcionario
和Data
。 我想做的是從Funcionario
調用方法
f1.imprimirFuncionario();
此方法打印有關f1
的信息
public void imprimirFuncionario(){
System.out.println("Nome: "+nome);
System.out.println("Departamento: "+departamento);
System.out.println("Salario: "+salario);
System.out.println("RG: "+rg);
System.out.println("Data de admissão: "+getData());
}
但是,最后一行System.out.println("Data de admissão: "+getData());
返回null
。
我希望此行打印與System.out.print("Data de admissão: "+tempDataAtual+"\\n");
相同的數據System.out.print("Data de admissão: "+tempDataAtual+"\\n");
打印。 (這位於TesteFuncionario
類中)
public class TesteFuncionario {
public static void main(String[] Args) {
Funcionario f1 = new Funcionario();
Scanner input = new Scanner(System.in);
System.out.println("Digite o nome: ");
String tempNome = input.nextLine();
f1.setNome(tempNome);
System.out.println("Digite o RG: ");
int tempRg = input.nextInt();
f1.setRg(tempRg);
System.out.println("Digite o departamento: ");
String tempDepartamento = input.next();
f1.setDepartamento (tempDepartamento);
System.out.println("Digite o salario: ");
double tempSalario = input.nextDouble();
f1.setSalario (tempSalario);
int diaTemp, mesTemp, anoTemp;
System.out.println("Informe a data de admissão (dd mm aaaa): ");
diaTemp = input.nextInt();
mesTemp = input.nextInt();
anoTemp = input.nextInt();
Data dataAtual = new Data(diaTemp, mesTemp, anoTemp);
String tempDataAtual = dataAtual.getData();
System.out.println("\n *** Antes do aumento ***\n");
System.out.print("Ganho Anual: ");
System.out.println(f1.calculaGanhoAnual());
System.out.print("Data de admissão: "+tempDataAtual+"\n");
f1.imprimirFuncionario();
System.out.println("\n *** Depois do aumento ***\n");
f1.receberAumento(20);
System.out.print("Ganho Anual: ");
System.out.println(f1.calculaGanhoAnual());
System.out.print("Data de admissão: "+tempDataAtual+"\n");
f1.imprimirFuncionario();
}
}
public class Data {
private int dia, mes, ano;
public Data(int dia, int mes, int ano) {
this.dia = dia;
this.mes = mes;
this.ano = ano;
}
public void setDia(int dia){
this.dia = dia;
}
public int getDia(){
return dia;
}
public void setMes(int mes){
this.mes = mes;
}
public int getMes(){
return mes;
}
public void setAno(int ano){
this.ano = ano;
}
public int getAno(){
return ano;
}
public void setData(int dia, int mes, int ano){
this.dia = dia;
this.mes = mes;
this.ano = ano;
}
public String getData (){
return dia + "/" + mes + "/" + ano;
}
public void imprimirData(){
System.out.println("Data: "+dia+"/"+mes+"/"+ano);
}
}
public class Funcionario {
private String nome, departamento, data;
private double salario;
private int rg;
public void setNome (String nome){
this.nome = nome;
}
public String getNome (){
return nome;
}
public void setDepartamento(String departamento){
this.departamento = departamento;
}
public String getDepartamento(){
return departamento;
}
public void setData (String data){
this.data = data;
}
public String getData(){
return data;
}
public void setSalario (double salario){
this.salario = salario;
}
public double getSalario (){
return salario;
}
public void setRg(int rg){
this.rg = rg;
}
public int getRg(){
return rg;
}
public void receberAumento(int porcentagem){
salario = salario + salario*porcentagem/100;
}
public double calculaGanhoAnual(){
return salario*12;
}
public void imprimirFuncionario(){
System.out.println("Nome: "+nome);
System.out.println("Departamento: "+departamento);
System.out.println("Salario: "+salario);
System.out.println("RG: "+rg);
System.out.println("Data de admissão: "+getData());
}
}
它為null
因為Funcionario
尚未設置其數據字符串。
在主要TesteFuncionario
的main
方法中,您將需要調用。
f1.setData("value you want");
這將設置數據的值,然后將其返回到getData()
。
您必須在f1
上設置setData
。 f1.setData(tempDataAtual);
public class TesteFuncionario {
public static void main(String[] Args) {
Funcionario f1 = new Funcionario();
Scanner input = new Scanner(System.in);
System.out.println("Digite o nome: ");
String tempNome = input.nextLine();
f1.setNome(tempNome);
System.out.println("Digite o RG: ");
int tempRg = input.nextInt();
f1.setRg(tempRg);
System.out.println("Digite o departamento: ");
String tempDepartamento = input.next();
f1.setDepartamento (tempDepartamento);
System.out.println("Digite o salario: ");
double tempSalario = input.nextDouble();
f1.setSalario (tempSalario);
int diaTemp, mesTemp, anoTemp;
System.out.println("Informe a data de admissão (dd mm aaaa): ");
diaTemp = input.nextInt();
mesTemp = input.nextInt();
anoTemp = input.nextInt();
Data dataAtual = new Data(diaTemp, mesTemp, anoTemp);
String tempDataAtual = dataAtual.getData();
f1.setData(tempDataAtual);
System.out.println("\n *** Antes do aumento ***\n");
System.out.print("Ganho Anual: ");
System.out.println(f1.calculaGanhoAnual());
System.out.print("Data de admissão: "+tempDataAtual+"\n");
f1.imprimirFuncionario();
System.out.println("\n *** Depois do aumento ***\n");
f1.receberAumento(20);
System.out.print("Ganho Anual: ");
System.out.println(f1.calculaGanhoAnual());
System.out.print("Data de admissão: "+tempDataAtual+"\n");
f1.imprimirFuncionario();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.