Concatenação de String, é possivel

7 respostas
guerra.raffa

estou começando a aprender Java e estou com um probleminha
Quero enviar vários dados para uma classe Vetor, tais como Nome, RA, e etc.
Fiz então algumas modificações na minha classe DADOS e ficou mais ou menos assim:

public class Dados {
    private String elem;
    private String RA;
   
    public void setAdiciona(String element) {
        this.elem = element;
        
    }
    
    public void setAdicionaRa(String raAluno){
        this.RA = raAluno;
    }
    
    public String getElement() {
        return this.elem;
        
    }
    
    public String getraAluno() {
        return this.RA;
    }
    
    public String toString() {
         return new StringBuffer().append(RA).append(elem).append('c').toString();
    } 

}
O problema é que na saída fica assim [nullnullc], o 'c' que eu coloquei para teste vai para a lista, mas os elementos que eu entro no teclado não, fica no lugar de nome e RA o valor null. Alguém pode me ajudar

7 Respostas

pmlm

O teu problema está noutro lado que não nessa classe.

Essa classe está bem, embora eu mudasse de StringBuffer para StringBuilder, ou mesmo simplesmente concatenando com o + .

Posta a parte de como estás a pedir os dados ao utilizador.

guerra.raffa

Muito obrigado pmlm, segue o código do da CLASSE PRINCIPAL

package Exercicio3;

import java.util.Scanner;

public class Principal {

    public static void main(String[] args) {
       
        int nroElem, x;
        x = 0;
        
        Scanner entrada = new Scanner(System.in);
        
        Vetor lista = new Vetor();
        
        System.out.println("-----------------Programa Alunos-----------------");
        System.out.println("      Quantos Alunos Deseja Incluir(Max 100)");
        nroElem = Integer.parseInt(entrada.nextLine());
        
        
        while (x < nroElem){
        x++;
        Dados elem = new Dados();
        Dados RA = new Dados();
        Dados pto = new Dados();
        System.out.println("Digite o "+x+"º RA:");
        int rA = Integer.parseInt(entrada.nextLine());
        System.out.println("Digite o "+x+"º Nome:");
        String nome = entrada.nextLine(); 
        elem.setAdiciona(nome);
        RA.setAdicionaRa(Integer.toString(rA));
        
        lista.adiciona(pto);
        
        
        }
        
        System.out.println(lista);
        System.out.println("Numero de Aluno(s): "+lista.tamanho());
        
        System.out.println("Qual posição deseja mostrar");
        int posic = Integer.parseInt(entrada.nextLine());
        Dados obj = lista.pega(posic);
        System.out.println(obj.getElement());
    }
}

Bom essa é a minha CLASSE VETOR

package Exercicio3;

public class Vetor {
    private Dados[] dados = new Dados[100];
    private int total = 0;
    
    public void adiciona(Dados allIn) {
        this.dados[this.total] = allIn; 
        this.total++;
    }
    
   
public String toString(){    
if(this.total == 0){
            return "[]";
        }
        
        StringBuilder builder = new StringBuilder();
        builder.append("[");
        for (int i = 0; i < this.total - 1; i++){
            builder.append(this.dados[i]);
            builder.append(",");
        }
        
        builder.append(this.dados[this.total - 1]);
        builder.append("]");
        return builder.toString();
}
  
public int tamanho(){
    return this.total;
}

public boolean contem(Dados dado){
    for( int indice =0;indice<=total -1;indice++){
        if(dado == this.dados[indice]){
            return true;
        }
    }
    return false;
} 

public Dados pega(int posicao){
        return this.dados[posicao];
    }

private boolean posOculpada(int posicao){
    return posicao >= 0 && posicao < this.total;
}

}
Atenciosamente.
ViniGodoy

Guerra.rafa, ao postar códigos, use a tag code. Eu vi que você tentou fazer isso em seu primeiro post, mas você deve DESMARCAR a opção “desabilitar formatação BB nesta mensagem”. É ela que permite que o código fique formatado. Já consertei as outras postagens para você.

guerra.raffa

Muito Obrigado, eu não sabia

Atenciosamente

pmlm

O teu problema está aqui. Estás a criar 3 instâncias do objecto em cada iteração quando deves criar apenas uma e será nessa que fazes os set e que adicionas depois à tua lista.

guerra.raffa

Obrigado amigo, consegui resolver.

guerra.raffa

Obrigado a todos

Criado 22 de março de 2014
Ultima resposta 29 de mar. de 2014
Respostas 7
Participantes 3