Olá, Guilherme!
O erro no seu código acontece porque o método AtribuirNota
foi definido para retornar um valor do tipo double
, mas em uma das condições do if/else
, você não está retornando nada.
Quando você tem um if
que verifica se a nota é válida (nota >= 0 && nota <= 10
), o código retorna a nota. No entanto, no bloco else
, você apenas imprime uma mensagem no console com Console.WriteLine
. O compilador percebe que, se a nota for inválida, o método não vai retornar um valor do tipo double
, e isso gera o erro.
Existem duas maneiras comuns de resolver isso:
Opção 1: Ajustar o retorno do método
Você pode modificar o método para garantir que um valor double
seja sempre retornado. Por exemplo, você pode retornar a nota atual, Nota
, se a nova nota for inválida.
public double AtribuirNota(double nota)
{
if (nota >= 0 && nota <= 10)
{
this.Nota = nota; // Atribui a nota aqui
return this.Nota; // Retorna a nota atribuída
}
else
{
Console.WriteLine("Nota inválida. Somente permitido notas de 0 a 10!");
return this.Nota; // Retorna a nota que já existia
}
}
Nesse caso, a propriedade Nota
do objeto é atualizada quando a nota é válida. A sua propriedade Nota
deveria ser privada para que a única forma de alterá-la seja através do método AtribuirNota
.
Opção 2: Usar um método do tipo void
Se o objetivo do método AtribuirNota
é apenas modificar a propriedade Nota
e não retornar um valor, o mais comum é declará-lo como void
. O tipo void
indica que o método não retorna nenhum valor.
public void AtribuirNota(double nota)
{
if (nota >= 0 && nota <= 10)
{
this.Nota = nota;
}
else
{
Console.WriteLine("Nota inválida. Somente permitido notas de 0 a 10!");
}
}
Espero ter ajudado e bons estudos!