public class Projeto {
public static void main(String[] args)
{
Empresa CineMax = new Empresa();
CineMax.numeroDeFuncionarios = 10;
CineMax.Adciona();
CineMax.estagiario[0].nome = "Zezinho";
System.out.println(CineMax.estagiario[0].nome);
}
}
//# CLASSE EMPRESA ##################################################
class Empresa{
String nome;
int numeroDeFuncionarios = 0; //não consigo modificar esse valor
int idDoFuncionario = 0;
Funcionario[] estagiario = new Funcionario[numeroDeFuncionarios];
void Adciona()
{
if(idDoFuncionario < numeroDeFuncionarios){
this.estagiario[idDoFuncionario] = new Funcionario();
this.idDoFuncionario++;
}
}
}
//# CLASSE FUNCIONARIO ###############################################
class Funcionario{
String nome;
}
Ola estou com uma duvida nesse codigo acima.
bem é um codigo simples com 2 classes.
mas acontece que não estou conseguindo mudar o valor de “numeroDeFuncionarios” dentro do Main.
exemplo: A classe “Empresa” eu defini com 0 funcionarios inicalmente, para se alterando no dentro Main.
dentro desta classe tem um metodo “Adciona” para adcionar um array de funcionarios. Esse array tem “numeroDeFuncionarios” de tamanho que inicialmente é zero. Ai dentro Do main eu mudo o “numeroDeFuncionarios” de 0 para 10 por exemplo, mas quando eu tendo usar o metodo “adciona” ele ainda acha que o “numeroDeFuncionarios” é 0 como inicialmente. :?
eu realmente não entendi essa lógica, aparentemente esta tudo perfeito, mas o metodo “Adciona” não atualiza como o esperado.
if(idDoFuncionario < numeroDeFuncionarios){
essa parte deveria ser assim:
if (0 < 10) {
mas ele insistem em fazer:
if(0 < 0){
mesmo eu mudando esse valor “numeroDeFuncionarios” de 0 para 10 no Main …
realmente não entendi
esse exercicio é um parecido com o da apostila da ‘Caelum’ .
public class Projeto {
public static void main(String[] args)
{
Empresa CineMax = new Empresa();
CineMax.mudarNumeroDeFuncionarios(10);
CineMax.Adciona();
CineMax.estagiario[0].nome = "Zezinho";
System.out.println(CineMax.estagiario[0].nome);
}
}
//# CLASSE EMPRESA ##################################################
class Empresa{
String nome;
int numeroDeFuncionarios; // se eu colocar = 1 funciona, mas quero que cada empresa tenha um numero fixo de funcionarios
int idDoFuncionario = 0;
Funcionario[] estagiario = new Funcionario[numeroDeFuncionarios];
void mudarNumeroDeFuncionarios(int f){ // mudei aqui
this.numeroDeFuncionarios = f;
}
void Adciona()
{
if(idDoFuncionario < numeroDeFuncionarios){
this.estagiario[idDoFuncionario] = new Funcionario();
this.idDoFuncionario++;
}
}
}
//# CLASSE FUNCIONARIO ###############################################
class Funcionario{
String nome;
}
continua dando o mesmo erro :
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at primeiro.Empresa.Adciona(Projeto.java:33)
at primeiro.Projeto.main(Projeto.java:11)
novamente esse codigo esta aparentemente perfeito, mas por algum motivo loko da esse erro :?
se eu inicializar a variavel “numeroDeFuncionarios” com 100 por exemplo, o programa funciona. Mas se eu criar outra empresa com 200 funcionarios, mesmo eu mudando “novaEmpresa.numeroDeFuncionarios = 200” o programa não aceita fica sempre nos 100 declarados na classe empresa.
Estranho isso é como se o “numeroDeFuncionarios” fosse uma constante.
estou sem ideias do que fazer, até porque estou começando agora a programar com classes …
tipo se eu mudar "empresa1.NumeroDeFuncionaris(200);
depois da um print nisso vai mostrar 200.
mas la no método ‘Adciona’ continua sendo o valor inicial declarado na classe Empresa.
:? do jeito que esta indo é melhor ou eu comprar um livro de java (apostilas que soh tem as perguntas, mas não a resposta não da…) ou fazer um curso de publicidade e propaganda mesmo…
Tb sou iniciante em Java, mas tentei te ajudar da melhor maneira que pude. Fiz algumas alterações no seu programa e imagino que seja algo parecido com esse código que vc está precisando :
import java.io.*;
class Empresa{
private String nomeEmpresa;
private int numeroDeFuncionarios;
public void setNumeroDeFuncionarios(int a) {
numeroDeFuncionarios = a;
}
public int getNumeroDeFuncionarios() {
return numeroDeFuncionarios;
}
}
class Funcionario{
private String nomeFuncionario;
private int idDoFuncionario;
public void setIdDoFuncionario(int id){
idDoFuncionario = id;
}
public int getIdDoFuncionario() {
return idDoFuncionario;
}
public void setNomeFuncionario(String nome) {
nomeFuncionario=nome;
}
public String getNomeFuncionario() {
return nomeFuncionario;
}
}
public class Projeto {
public static void Adiciona(int numFunc, Funcionario[] estagiario) {
for (int y=0; y<numFunc; y++)
estagiario[y].setIdDoFuncionario(y);
}
public static void main(String[] args){
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Empresa CineMax = new Empresa();
System.out.print("Informe o total de funcionarios: ");
try {
CineMax.setNumeroDeFuncionarios(Integer.parseInt(br.readLine()));
}
catch (Exception ioe) {
System.out.println("Erro de entrada de dados");
System.exit(1);
}
Funcionario[] estagiario = new Funcionario[CineMax.getNumeroDeFuncionarios()];
for (int x=0;x<=estagiario.length-1;x++){
estagiario[x] = new Funcionario();
System.out.print("Nome do Funcionario "+(x+1)+ ":");
try{
estagiario[x].setNomeFuncionario(br.readLine());
}
catch (IOException ioe) {
System.out.println("Erro de entrada de dados");
System.exit(1);
}
}
Adiciona(CineMax.getNumeroDeFuncionarios(),estagiario);
for (int x=0;x<=estagiario.length-1;x++)
System.out.println("Id do funcionario "+(x+1)+ ":" +estagiario[x].getIdDoFuncionario());
}
}
Espero ter ajudado! Qualquer dúvida, volte a postar!
public class Projeto {
public static void main(String[] args)
{
Empresa CineMax = new Empresa();
CineMax.mudarNumeroDeFuncionarios(100);
for (int i = 0; i< CineMax.numeroDeFuncionarios; i++ ){
CineMax.Adciona();
CineMax.estagiario[i].nome = "Estagiario " + (i + 1);
System.out.println(CineMax.estagiario[i].nome);
}
}
}
//# CLASSE EMPRESA ##################################################
class Empresa{
String nome;
int numeroDeFuncionarios = 0;
int idDoFuncionario = 1;
Funcionario[] estagiario;
void mudarNumeroDeFuncionarios(int f){
estagiario = new Funcionario[f];
this.numeroDeFuncionarios = f;
}
void Adciona()
{
this.estagiario[(idDoFuncionario -1)] = new Funcionario();
this.idDoFuncionario++;
}
}
//# CLASSE FUNCIONARIO ###############################################
class Funcionario
{
String nome;
}
Valeuu como o Romeo disse eu sou brasileiro e depois de se muita pancadaria consegui
valeu Flavio tambem, agora tenho que imprementar esse Buffered para entrada de dados no meu codigo.
vlw
e eu pensando em fazer publicidade e propaganda 8) …