[RESOLVIDO] Dúvida JAVA iniciante

9 respostas
A

Olá pessoal.
Esse é meu primeiro post aqui, iniciei esse semestre a estudar Programação, então ainda tenho várias dúvidas. Tenho um exercício para resolver e não estou conseguindo o resultado esperado, meu método está retornando somente o primeiro valor da array.
Estou mandando um dos enunciados da questão a parte do programa referente a isso logo abaixo. O que estou fazendo de errado?

g) Implemente o método public String toString() para essa classe. Ele deve retornar uma string com todas as notas que se encontram na array. Para tanto, faça um laço for de 0 a numNotas e concatene em uma String o que se encontra na array em cada posição. Observe que você vai percorrer a array até numNotas e não até notaAlunos.length. Isso porque a array pode ter posições não ocupadas no seu final.

public String toString(){

for(int i=0; i<numNotas; i++){

return Nota:+notaAlunos[i];

}

return " ";

}

9 Respostas

ProgramadorBR

esse é seu código completo?

A

Não, só a parte referente a essa questão. Quer q mande ele todo?

ProgramadorBR

manda, eu sei que via ter dificuldade em postar, então

da Ctrl + v aqui no post, seleciona ele e clica aqui:
image
para que o código fique certinho

A
class Turma
{

private String nome;

private double[] notaAlunos;

private int numNotas;
public Turma (String nome, int tamanho)

{

this.nome=nome;

notaAlunos=new double[tamanho];

numNotas=0;

}

public void setNome(String nome)

{

this.nome=nome;

}

public String getNome()

{

return this.nome;

}

public int getNumNotas()

{

return numNotas;

}

public void insert(double nota)

{

if (numNotas<notaAlunos.length)

{

notaAlunos[numNotas]=nota;

numNotas++;

}

}

public double getNota(int pos)

{

if (pos<numNotas)

return notaAlunos[pos];

else

return -1;

}

public String toString()

{

for(int i=0; i<numNotas; i++)

{

return Nota:+notaAlunos[i];

}

return " ";

}

public double calculaMedia()

{

double soma=0;

double media=0;

for(int i=0;i<notaAlunos.length;i++)

soma=soma+notaAlunos[i];

media=soma/(numNotas);

return media;

}

}
Mike

Acontece que o return encerra o método na hora, por isso a iteração não continua.

O certo seria ir formando a mensagem dentro do for e quando acabar o for, retornar

String mensagem= "";
for(int i=0; i < numNotas; i++){
    mensagem = mensagem + "Nota " + (i+1) + ":" + notaAlunos[i] + " "; 
}

return mensagem;

Mais certo ainda seria utilizar a classe StringBuilder para formar a mensagem, mas no momento o importante é fazer dar certo

A

Puts era exatamente isso!
O return estava encerando o método.
Muito obrigado!

PS: Ainda não vi nada sobre essa classe StringBuilder mas vou dar uma pesquisada!

ProgramadorBR

Qual curso está fazendo?

Mike

Se a resposta te ajudou a resolver o problema, considere marca-la como SOLUÇÃO e coloca [RESOLVIDO] no nome do tópico :+1:

Sobre o StringBuilder: toda vez que você concatena uma String, uma nova String é gerada internamente(consumindo memoria) , para evitar essa criação de Strings utilizamos o StringBuilder

A

Análise e desenvolvimento de sistemas.

Criado 20 de novembro de 2018
Ultima resposta 20 de nov. de 2018
Respostas 9
Participantes 3