[RESOLVIDO] Dúvida JAVA iniciante

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 " ";
}

esse é seu código completo?

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

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

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;
}
}

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

1 curtida

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!

Qual curso está fazendo?

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

Análise e desenvolvimento de sistemas.

1 curtida