A variavel maiorValor foi definida como 0, e em todos as iterações ela permanece como 0. O correto nao seria?
if (!(maiorValor > _itens[i].Saldo)) { maiorValor = _itens[i]; }
A variavel maiorValor foi definida como 0, e em todos as iterações ela permanece como 0. O correto nao seria?
if (!(maiorValor > _itens[i].Saldo)) { maiorValor = _itens[i]; }
Lucas,
você pegunta sobre a diferença ente escrever desta forma:
if (!(maiorValor > _itens[i].Saldo))
{
conta = _itens[i];
}
Ou desta forma?
if (!(maiorValor > _itens[i].Saldo)) { maiorValor = _itens[i]; }
Os dois códigos são exatamente iguais, o primeiro é um pouco mais fácil de entender, principalmente para quem é iniciante.
O que eu achei estranho foi "maiorValor = 0":
public ContaCorrente MaiorSaldo()
{
ContaCorrente conta=null;
double maiorValor = 0;
for (int i = 0; i < _itens.Length; i++)
{
if (_itens[i] != null)
{
if (!(maiorValor > _itens[i].Saldo))
{
conta = _itens[i];
}
}
}
return conta;
}
Seria melhor assim:
public ContaCorrente MaiorSaldo()
{
ContaCorrente conta=null;
for (int i = 0; i < _itens.Length; i++)
{
if (_itens[i] != null)
if (!_itens[i].Saldo < 0))
conta = _itens[i];
}
return conta;
}
[]'s,
Fabio I.
Eu adicionei outras contas, com saldos diferentes, em posições aleatorias, e quando voce executa tanto o codigo que ta na resolução do problema, quanto este que voce enviou, ele imprime sempre a ultima conta da lista, pois se você manter o IF, sempre apenas verificando o valor 0, ele apenas vai validando todas as contas.
Para resolver eu fiz assim:
public ContaCorrente MaiorSaldo()
{
ContaCorrente conta = null;
var maiorValor = 0;
for (var i = 0; i < _itens.Length; i++)
{
if (_itens[i] != null)
{
if (!(maiorValor > _itens[i].Saldo))
{
maiorValor = (int)_itens[i].Saldo;
conta = _itens[i];
}
}
}
return conta;