Duvidas com Array

9 respostas
henry.everton

estou com um outro problema... já é o terceiro ja cara ta embaçado :oops:

entao estou tentando fazer um array de uma classe eu fiz deste jeito aqui:

public class Empresa{
	
	public String nomeemp;
	public String cnpjemp;
	
	Funcionario p = new Funcionario();
	
	public Funcionario[] funcionario;
	int cont = 10;
	funcionario = new Funcionario[cont];
	
	[b]public void DadosEmpresa(){[/b]
		
		for (cont=10;cont<=cont.length;cont++){
		
		p.setNome();
		System.out.println("gravou"+cont1);
		}
	}
}

entao mas está dando erro, expected na linha sublinhada.

9 Respostas

nbluis

Assim ó …

Funcionario p = new Funcionario();
int cont = 10;
funcionario = new Funcionario[cont];

Essa parte de seu código não está dentro de método nenhum, tá solto na classe.

e outra, não é necessário chamar o método length() de um tipo inteiro primitivo.

a variavel count1 não existe.

Hammer

bem, se elmbre q os dados do array sao acessados a partir do zero, entao ele vai dro 0 ate o 9 e nao do 1 ate o 10

por isso inicialize o count no for com 0 e nao com 10

e no avaliazao utiliza so < e nao <=

e seria funcionario.length ao invez d count.length n?

Raff

Cara o que tem haver isso que você disse, que o codigo está solto na classe não pode tipo não entendi isso naun amigo poderia explicar melhor ???

Marck

Cara, não consegui testar mas tenta isso:

public class Empresa{
 	
 	public String nomeemp;
 	public String cnpjemp;
 	
 	Funcionario p = new Funcionario();
 	int cont = 10;
 	
        
        public Funcionario2 [] vet = new Funcionario2[cont];
 	 	
 	public void DadosEmpresa(){
 		
 		//se vc usar < = vai estourar o vet. Use apenas <
               for (int i = 0; i <vet.length;cont++){
 		        //aqui vc usa apenas cont. Se sua intenção era mostrar
 	 		System.out.println("gravou"+cont);
                        //mostra valor na posicao cont
                        System.out.println("gravou"+vet[cont]);
 		}
 	}
 }

eu não testei, mas acho q vai dar certo.

No caso o vetor declarado fora de metodos diz que eles são de intancia. Ja os que sao declarados dentro de metodos são locais e ficam na memoria apenas quando o metodo e executado.

henry.everton

bom legal mas to querendo avançar um pouco... o q estou fazendo é o seguinte... nesta classe que declarei um vetor do tipo dela, eu peço pro usuário digitar o nome do mesmo. ai eu faço um getNome para funcionario[cont] e está dando incompatibilidade. deem uma olhada no que eu fiz.

public class Empresa{
	
	public String nomeemp;
	public String cnpjemp;
	
	public String DadosEmpresa(){
	// instanciei a classe pra utilizar o set e o get da classe pra acessar o atributo Nome
	Funcionario p = new Funcionario();
	
	// declarei o vetor do tipo da classe
	Funcionario[] funcionario;
	int cont = 10;
	funcionario = new Funcionario[cont];

			for (cont=0;cont<10;cont++){
		// p.setNome pra setar o nome, mas ai vem a duvida q vou descrever. Bom mas vai pedir 10 vezes pra escrever o nome
		p.setNome();
		// aqui eu faço um getNome para funcionario[cont], é onde esta dando erro
		funcionario[cont]=p.getNome();
		System.out.println("gravou"+cont);
		System.out.println(funcionario[cont]);
		}
	}
}
Marck

manda a outra classe.

henry.everton
import javax.swing.*;
import java.io.*;

public class Funcionario{

	/*#########################################################################################
	#                                                                                         #
	#       Variáveis                                                                         #
	#                                                                                         #
	#########################################################################################*/

	private String nome="";
	private String depto="";
	private double salario=0;
	private String admissao="";
	private String rg="";
	private boolean status;
	private String statusadm="";

	/*#########################################################################################
	#                                                                                         #
	#       Metodos set                                                                       #
	#                                                                                         #
	#########################################################################################*/

	public void setNome(){
		nome = JOptionPane.showInputDialog(null,"Digite o nome do funcionário","Info Funcionário",JOptionPane.PLAIN_MESSAGE);
		this.nome = nome;
	}
	/*#########################################################################################
	#                                                                                         #
	#       Metodos get                                                                       #
	#                                                                                         #
	#########################################################################################*/
	
	public String getNome(){
		return(this.nome);
	}
	/*#########################################################################################
	#                                                                                         #
	#       Metodos                                                                           #
	#                                                                                         #
	#########################################################################################*/
	
	public void Bonifica(){
		int rec = (JOptionPane.showConfirmDialog(null,"Deseja alterar o salário do funcionário "+this.nome+"?","Alteração de Salário",0,JOptionPane.QUESTION_MESSAGE));
		if (rec == 0){
		this.salario = Double.parseDouble(JOptionPane.showInputDialog(null,"Digite o valor para alteração do salário","Salário",JOptionPane.QUESTION_MESSAGE));
		}
	}
	
	public void Demite(){
		int rec = JOptionPane.showConfirmDialog(null,"Deseja alterar o status do funcionáio "+this.nome+"?","Alteração de Status",0,JOptionPane.QUESTION_MESSAGE);
		if(rec == 0){
			this.status = true;
			}
		else{
			this.status = false;
		}
	}
	
	public void ImprimeInfo(){
		JOptionPane.showMessageDialog(null,"Abaixo segue as informações do funcionário\n\n"+this.nome+"\n"+this.depto+"\n"+this.salario+"\n"+this.admissao+"\n"+this.rg,"Imprimindo Dados",JOptionPane.INFORMATION_MESSAGE);
	}
}
Marck

Olha só…

voce pode criar o vetor com Object:

public Object [] vet = new Funcionario2[cont];

ou de String:

public String [] vet = new Funcionario2[cont];

seria o mais fácil a se fazer.

Não sei se há outra maneira.

Mrwin

Rapaz… só uma dica, pq vc não usa ArrayList?

//se for java 5 em diante
ArrayList lista = new ArrayList();

é mais fácil vc trabalhar com Arraylist, pq ele pode crescer com array o tamanho vai ficar fixo.

depois fica usando, list.add(Funcionario)… desse jeito vc fica livre de conversão (CAST) etc… e pode usar diretamente

lista.get(x).getXXXX ou setXXXXX

Outra coisa, aconselho vc a modelar melhor suas classes, tentando deixá-las mais dentro do padrão java beans… por exemplo, não é estranho vc ter um método setNome( “VAZIO” )… geralmente, todo método set recebe o q vai “setar”… se vc vai testar sua aplicação via terminal então o método main não deveria chamar:
funcionario.setNome(joptionpane…);??
só sugestão.

Criado 29 de maio de 2007
Ultima resposta 29 de mai. de 2007
Respostas 9
Participantes 6