Array que nao pega Fotos

12 respostas
O

Boa Noite, estou com dificuldades de colocar um objeto do tipo Fotos num array quando dou um print no array da a seguinte mng … segue abaixo o codigo Tipo: Fotos@addbf1 sendo q deveria printar para mim P 25 segue o codigo abaixo… obrigado.

public class Fotos {
	char tipo;
	int qtd;
	
	void adiciona(char type, int quant){
		this.tipo = type;
		this.qtd = quant;
	}
	void mostrar(){
		System.out.println("Tipo: " + this.tipo + " Quantidade: " + this.qtd);
	}
	
}


public class Array {
	Fotos[] fotos;
	
	void adicionar(Fotos f){
		for(int x = 0; x <this.fotos.length;x++){
		this.fotos[x] = f;	
		}
	}	
		
			
	void mostrar(){
    	for(int x = 0; x < this.fotos.length;x++){
    		if(this.fotos[x] == null){
    			System.out.println("Nao tem nada no array");
    		}
    		else{
    			System.out.println("Tipo: " + this.fotos[x]);
    			
    		}
    		break;
    	}
    }

}
	
	
public class Testar {
	public static void main(String[] args){

		Array a1 = new Array();
		a1.fotos= new Fotos[100];
		Fotos f1 = new Fotos();
		f1.adiciona('P', 25);
		a1.adicionar(f1);
		a1.mostrar();


	}
}

12 Respostas

fujioka

Corrigi no código… Se você não quiser chamar o método mostrar… Você poderia também implementar o toString() na sua classe Fotos.

public class Fotos {
	char tipo;
	int qtd;
	
	void adiciona(char type, int quant){
		this.tipo = type;
		this.qtd = quant;
	}
	void mostrar(){
		System.out.println("Tipo: " + this.tipo + " Quantidade: " + this.qtd);
	}
	
       @override
        public String toString(){
               return "Tipo: " + this.tipo + " Quantidade: " + this.qtd ";
        }

}

ozzyblank:
Boa Noite, estou com dificuldades de colocar um objeto do tipo Fotos num array quando dou um print no array da a seguinte mng … segue abaixo o codigo Tipo: Fotos@addbf1 sendo q deveria printar para mim P 25 segue o codigo abaixo… obrigado.

public class Fotos {
	char tipo;
	int qtd;
	
	void adiciona(char type, int quant){
		this.tipo = type;
		this.qtd = quant;
	}
	void mostrar(){
		System.out.println("Tipo: " + this.tipo + " Quantidade: " + this.qtd);
	}
	
}


public class Array {
	Fotos[] fotos;
	
	void adicionar(Fotos f){
		for(int x = 0; x <this.fotos.length;x++){
		this.fotos[x] = f;	
		}
	}	
		
			
	void mostrar(){
    	for(int x = 0; x < this.fotos.length;x++){
    		if(this.fotos[x] == null){
    			System.out.println("Nao tem nada no array");
    		}
    		else{
                                                //Você esqueceu de chamar o método mostrar do seu objeto foto.
    			System.out.println("Tipo: " + this.fotos[x].mostrar());
    			
    		}
    		break;
    	}
    }

}
	
	
public class Testar {
	public static void main(String[] args){

		Array a1 = new Array();
		a1.fotos= new Fotos[100];
		Fotos f1 = new Fotos();
		f1.adiciona('P', 25);
		a1.adicionar(f1);
		a1.mostrar();


	}
}

O

Tentei fazer como voce falou mas continua pegando somente o numero da memoria segue o codigo novo nao entendo pq nao esta pegando certo

public class Fotos {
		String tamanho;
		int quantidade;
	
	void adiciona(String tam, int qtd){
		this.tamanho = tam;
		this.quantidade = qtd;
	}
	
	public String toString(){  
		return "Tipo: " + this.tamanho + " Quantidade: " + this.quantidade;
			               	

	}
}	
public class Array  {
	Fotos[] fotos;

	
	
	void adicionaNaArray(Fotos f){
		for(int i = 0; i < this.fotos.length; i++){
			this.fotos[i] = f;
		}
	}
	 
	void verificar(){
		for(int x = 0; x < this.fotos.length;){  
			if(this.fotos[x] == null){  
				System.out.println("Nao possui fotos");  
			}
			else{
				System.out.println(toString());
			}
			break;
		}
	}
}


public class Teste {
	public static void main(String[] args){
		Fotos f1 = new Fotos();
		Array a1 = new Array();
		a1.fotos = new Fotos[500];
		f1.adiciona("G", 5);
		a1.adicionaNaArray(f1);
		a1.verificar();
		
		
		
		
	}
	
	
}

agradeço quem me ajudar… Obrigado.

robertoMoraes
void verificar(){
		for(int x = 0; x < this.fotos.length;){  
			if(this.fotos[x] == null){  
				System.out.println("Nao possui fotos");  
			}
			else{
				System.out.println(fotos[x]);// tente dessa forma
			}
			break;
		}
	}

:smiley:

O

Boa Noite robertoMoraes eu fiz como vc falou e printou, mas se eu coloco no codigo mais um objeto no caso um f2 e faço um a1.adicionaNaArray(f2); ele nao é printado, é printado somente o f1 o que pode estar de errado no meu metodo adiciona na classe Array ? no caso ele nao esta printando a array e somente o objeto f1.

pois esta criado um for para ir incrementando o x certo ???

segue o codigo com o novo objeto

public class Teste {
	public static void main(String[] args){
		Fotos f1 = new Fotos();
		Fotos f2 = new Fotos();
		Fotos f3 = new Fotos();
		Array a1 = new Array();
		a1.fotos = new Fotos[500];
		
		f1.adiciona("G", 5);
		f2.adiciona("P", 3);
		f3.adiciona("P", 3);
		
		a1.adicionaNaArray(f1);
		a1.adicionaNaArray(f2);
		a1.adicionaNaArray(f3);
		
		a1.verificar();

}


}

robertoMoraes
void adicionaNaArray(Fotos f){  
        for(int i = 0; i < this.fotos.length; i++){  
            if(fotos[i] == null){
                this.fotos[i] = f;  
                break;
            }
        }  
    }
O

Boa Noite novamente, eu ja tinha feito assim como voce colocou com esse if igual e continua nao funcionando… sera que pode ser algum pau no eclipse ?

muito estranho segue o codigo com a modificação

public class Array  {
	Fotos[] fotos;

	
	
	void adicionaNaArray(Fotos f){
		for(int x = 0; x < this.fotos.length; x++){
			if(fotos[x] == null){  
                this.fotos[x] = f;    
                break; 
			}
		}
		
	}
		
	 
	void verificar(){
		for(int x = 0; x < this.fotos.length;){  
			if(this.fotos[x] == null){  
				System.out.println("Nao possui fotos");  
			}
			else{
				System.out.println(this.fotos[x]);
			}
			break;
		}
	}
}

public class Teste {
	public static void main(String[] args){
		Fotos f1 = new Fotos();
		Fotos f2 = new Fotos();
		Fotos f3 = new Fotos();
		Fotos f4 = new Fotos();
		
		Array a1 = new Array();
		a1.fotos = new Fotos[100];
		
		
		f1.adiciona("G", 12);
		f2.adiciona("G", 24);
		f3.adiciona("P", 24);
		f4.adiciona("P", 12);
		
		
		
		a1.adicionaNaArray(f1);
		a1.adicionaNaArray(f2);
		a1.adicionaNaArray(f3);
		a1.adicionaNaArray(f4);
		
		a1.verificar();
	
		
		
	}
	
	
}

segue o resultado no console

Tipo: G Quantidade: 12

Obrigado novamente robertoMoraes

Kanin_Dragon

Jovem,
sempre vai exibir o primeiro registro pois o metodo verificar está com o break e sempre vai sair na primeira iteração, retire
o break que todos os objetos serão exibidos.

abs,

O

Boa Tarde Kanin Dragon tirei o break dai fica infinitamente printando Tipo G quantidade 12 em nenhum momento ele printa os outros objetos que deveriam estar no array, mesmo assim obrigado pela ajuda, e quem puder me ajudar a resolver este problema agradeço…

robertoMoraes
void verificar(){  
        for(int x = 0; x < this.fotos.length; x++){    // você esqueceu do x++ por issu ele não saia da primeira posição 
            if(this.fotos[x] == null){    
                System.out.println("Nao possui fotos");    
            }  
            else{  
                System.out.println(this.fotos[x]);  
            }  
            
        }  
    }
O

Boa Tarde Realmente coloquei o x++ e funcionou, Muito Obrigado a todos que responderam.

O

Gostaria de utilizar o mesmo topico pra tentar resolver um metodo, ali em cima é um codigo que adiciona um tipo de foto se é P,M ou G e a quantidade de fotos ou seja G … 10 M … 5 e P … 2
ta eu preciso criar um metodo que verifique nessa array que tenha esses dados tipo e quantidade se for igual some as quantidades e salve em uma nova variavel, um exemplo seria a array tem 4 posicoes na posicao 0 tem um g 10 na posicao 1 tem um g 12 na posicao 2 tem um P 45 e na posicao 3 tem um p 7, ou seja nessa nova varial salve o resultado da soma dos tipos, que uma nova variavel receba P 52 e outra variavel receba G 22 e jogue isso na tela, eu criei um metodo que verifica se eh igual o tipo e some as quantidades so que ele soma tudo, eu preciso de algo se for g vai no variavel quantidade se for m variavel quantidade2 se for p variavel quantidade3.

nao sei se alguem pode me dar uma luz referente a isso.

segue o metodo que criei

void teste(){
		int quantidade = 0;
		for (int a = 0; a < this.fotos.length; a++){
			for (int y = 1; a < this.fotos.length; y++){
				if(this.fotos[a] != null && this.fotos[a].tamanho .equals(this.fotos[y].tamanho)){
					quantidade += + this.fotos[a].quantidade + this.fotos[y].quantidade;	
				}
					System.out.println ( quantidade + "...." + this.fotos[y].tamanho);
			}
			
		}
			
}
O

Alguma Ideia Alguem ?

eu pensava sera que nao seria necessario criar um array onde recebesse tres posições e quando achava uma variavel tamanho igual ele colocase a variavel quantidade para a array?

Criado 5 de abril de 2011
Ultima resposta 8 de abr. de 2011
Respostas 12
Participantes 4