在 java 上无法正常工作
For not working properly on java
我有 class Empresa 和 class Funcionario,当我试图给员工增加薪水时,它编译但不工作。这里的代码:
函数:
class Funcionario{
String departamento;
String dataEntrada;
String rg;
String nome;
String ferias;
double salario;
void recebeAumento(double aumento){
this.salario += aumento;
}
double calculaGanhoAnual(){
this.salario = salario * 12;
return salario;
}
void mostra(){
System.out.println("Nome: " + this.nome);
System.out.println("Salário: " + this.salario);
System.out.println("Departamento: " + this.departamento);
System.out.println("RG: " + this.rg);
System.out.println("Data de admissão: " + this.dataEntrada);
System.out.println("Ganho anual: " + calculaGanhoAnual());
}
}
class Empresa{
String nome;
String cnpj;
Funcionario [] empregados = new Funcionario[10];
void adiciona(Funcionario func){
for(int i = 0; i < empregados.length; i++){/*i começa da posição 0 e tera o tamanho da
array empregados*/
if(empregados[i] == null){//se a posição estiver vazia
empregados[i] = func; /* a array recebe o valor de func que for adicionado pelo
metodo void*/
break;
}
}
}
void mostraEmpregados(){
Funcionario func = new Funcionario();
for(int i = 0; i < this.empregados.length; i++){
System.out.println("Funcionário na posição: " + i);
System.out.println("Salário do funcionário: " + func.salario);
}
}
}
和测试 class:
class TestaEmpresa{
public static void main (String [] args){
Empresa emp = new Empresa();
emp.empregados = new Funcionario[10];
Funcionario func = new Funcionario();
for(int i = 0; i < 5; i++){
func.salario = 1000.0 + i * 100;
emp.adiciona(func);
}
emp.mostraEmpregados();
}
}
经过运行测试,我得到数组的位置和工资null,像这样:
Funcionário na posição: 0
Salário do funcionário: 0.0
Funcionário na posição: 1
Salário do funcionário: 0.0
Funcionário na posição: 2
Salário do funcionário: 0.0
Funcionário na posição: 3
Salário do funcionário: 0.0
您没有从数组中检索元素。
System.out.println("Salário do funcionário: " + func.salario);
应该是
System.out.println("Salário do funcionário: " + this.empregados[i].salario);
此外,在访问 this.empregados[i].salario
.
之前,您可能应该确保 this.empregados[i]
不为空
错误出在您的打印方法中
void mostraEmpregados(){
Funcionario func = new Funcionario();
for(int i = 0; i < this.empregados.length; i++){
System.out.println("Funcionário na posição: " + i);
System.out.println("Salário do funcionário: " + func.salario);
}
}
更改为
System.out.println("Funcionário na posição: " + i);
System.out.println("Salário do funcionário: " + this.empregados[i].salario);
你不需要那个对象 Funcionario func = new Funcionario();
我有 class Empresa 和 class Funcionario,当我试图给员工增加薪水时,它编译但不工作。这里的代码:
函数:
class Funcionario{
String departamento;
String dataEntrada;
String rg;
String nome;
String ferias;
double salario;
void recebeAumento(double aumento){
this.salario += aumento;
}
double calculaGanhoAnual(){
this.salario = salario * 12;
return salario;
}
void mostra(){
System.out.println("Nome: " + this.nome);
System.out.println("Salário: " + this.salario);
System.out.println("Departamento: " + this.departamento);
System.out.println("RG: " + this.rg);
System.out.println("Data de admissão: " + this.dataEntrada);
System.out.println("Ganho anual: " + calculaGanhoAnual());
}
}
class Empresa{
String nome;
String cnpj;
Funcionario [] empregados = new Funcionario[10];
void adiciona(Funcionario func){
for(int i = 0; i < empregados.length; i++){/*i começa da posição 0 e tera o tamanho da
array empregados*/
if(empregados[i] == null){//se a posição estiver vazia
empregados[i] = func; /* a array recebe o valor de func que for adicionado pelo
metodo void*/
break;
}
}
}
void mostraEmpregados(){
Funcionario func = new Funcionario();
for(int i = 0; i < this.empregados.length; i++){
System.out.println("Funcionário na posição: " + i);
System.out.println("Salário do funcionário: " + func.salario);
}
}
}
和测试 class:
class TestaEmpresa{
public static void main (String [] args){
Empresa emp = new Empresa();
emp.empregados = new Funcionario[10];
Funcionario func = new Funcionario();
for(int i = 0; i < 5; i++){
func.salario = 1000.0 + i * 100;
emp.adiciona(func);
}
emp.mostraEmpregados();
}
}
经过运行测试,我得到数组的位置和工资null,像这样:
Funcionário na posição: 0
Salário do funcionário: 0.0
Funcionário na posição: 1
Salário do funcionário: 0.0
Funcionário na posição: 2
Salário do funcionário: 0.0
Funcionário na posição: 3
Salário do funcionário: 0.0
您没有从数组中检索元素。
System.out.println("Salário do funcionário: " + func.salario);
应该是
System.out.println("Salário do funcionário: " + this.empregados[i].salario);
此外,在访问 this.empregados[i].salario
.
this.empregados[i]
不为空
错误出在您的打印方法中
void mostraEmpregados(){
Funcionario func = new Funcionario();
for(int i = 0; i < this.empregados.length; i++){
System.out.println("Funcionário na posição: " + i);
System.out.println("Salário do funcionário: " + func.salario);
}
}
更改为
System.out.println("Funcionário na posição: " + i);
System.out.println("Salário do funcionário: " + this.empregados[i].salario);
你不需要那个对象 Funcionario func = new Funcionario();