GETTERS E SETTERS (AJUDA)

12/06/2020

0

Boa tarde, companheiros programadores.

Estava criando um programa usando a herança e eu precisava usar os valores da minha classe BK na minha classe GT, mas só queria usar os valores então eu uso o Get, no entanto, não estou conseguindo usar.

Poderiam me ajudar, por favor.

Sou novo na programação.

OBS: Já tentei instanciar minha classe BK e não deu certo e está no mesmo pacote pq é protected.


**Classe BK - Declaração dos meus Getters e Setters, mas só quero usar o Get.**

  // Getters e Setters para usar nas outras subclasses, com o modificador protected que só não pode usar por outros pacotes.

    protected int getValorConta() {
    return valorConta;
    }

    protected int getValorDaDivida() {
    return valorDaDivida;
    }

    protected void setValorConta(int valor) {
    valorConta = valor;
    }

    protected void setValorDaDivida(int valor) {
    valorDaDivida = valor;
    }


**Classe GT - Quero usar nesse método void.**

   public void cobrarTodos() {
        Divida = getValorDaDivida();
        Corrente = getValorConta();

        if ( Divida == 0) { // Quando for igual a 0 não acontece nada, apenas apresente o valor da conta. 
        Corrente = Corrente;
        }
        if ( Corrente  >= Divida ) {
        Corrente = Corrente - Divida;
        }
        if ( Corrente < Divida) {
        Divida = Divida - Corrente;
        Corrente = 0;
        }
Lucas

Lucas

Responder

Post mais votado

12/06/2020

Fala Lucas,

mas o que acontece exatamente?
está retornando erro?


Minha ideia é por exemplo: se o número tanto de gerentes for igual a 20 ele não precisa fazer nada é só retornar falso, caso contrário
o gerente já consta no arranjo então usaria o cpf para verificar e se estiver não precisa ser inserido e o método retornaria falso e por último o gerente passado como parâmetro que vai ser adicionado não consta no arranjo ai o gerente precisa ser adicionado na posição numGerente, incrementaria 1 e retornaria verdadeiro.

Fiz outra classe só para testar o programa com o método main.


Acabei respondendo antes de você mandar isso.
Entendi tua dificuldade e acho que o problema é justamente isso que lhe mandei, verifique e confirme aqui, por favor!



Tinha faltado só mais uma classe que é o banco, que deixei o método adicionar gerente.

O adicionar gerente é a mesma coisa que adicionar cliente a diferença é q tem 10 gerentes e 20 clientes para cada gerente.
cada gerente pode atender 20 clientes.

CLASSE BANCO

public class Banco {
private Gerente[] gerentes;
private int numGerentes;

/* Construtor da Classe Banco
* Inicializa os dois atributos do objeto que esta sendo instanciado.
*/
Banco(){
gerentes = new Gerente[10];
numGerentes = 0;
}


/* Metodo para Imprimir informacoes gerais sobre o banco atual
*/
void imprimir(){
System.out.println("#########################################################################");
System.out.println("Imprimindo informacoes do banco.");
System.out.println("Ha " + numGerentes + " gerente(s) neste banco.");
Gerente ger;
for (int g=0; g < numGerentes; g++){
ger = gerentes[g];
System.out.println("Gerente: " + ger.nome + "\\\\tCPF: " + ger.cpf);
ger.imprimirClientes();
}
System.out.println("#########################################################################");
}

boolean adicionarGerente(Gerente gerente){

if ( this.numGerentes  == 10) {
return false;
}
for ( int p=0; p < numGerentes; p++) { // Perorrer o arranjo.  
if ( this.gerentes[p].cpf == gerente.cpf ) {
return false;
}
    }
for( int n=0; n < numGerentes; n++) {
if (gerente.cpf != this.gerentes[n].cpf){
gerentes[numGerentes] = gerente;
numGerentes += 1;
return true;
}
}
}
}


Cara, essa mensagem de erro "missing return statement" indica que algum método do seu programa não está contemplando todos os fluxos possíveis. Em outras palavras, em algum método seu (que exige retorno) existe um caminho que o fluxo pode seguir em que ele acabará não retornando nada.

pelo que analisei teu código, acredito que está na tua função AdicionarGerente. Percebe que você colocou alguns if's para verificar algumas condições, mas e se todas as condições forem falsas? pelo que percebi é esse o fluxo que está faltando. Falta você colocar um return em caso de todas as suas condições serem falsas.

Por mais que você garanta(através de outras funções e etc) que uma dessas condições será atendida, o seu compilador/debugger muitas vezes não tem como saber, então ele espera que você complete o fluxo inteiro.

Exemplo:

eu tenho uma função que soma dois numeros:

public void main()
{
    int x=1, y=2;
    soma(x, y)

}

public int soma (int x, int y)
{
 if(x>0)
{
    return x+y
}
if(y>0)
{
return x+y
}

}


veja que nesse trecho simples, eu fiz duas verificações de propósito(obviamente isso é apenas um exemplo extremamente simples).
verifiquei se x é maior que zero, e verifiquei se y é maior que zero. na minha função main(), eu passei atribui aos parametros os valores 1 e 2. Portanto, teoricamente não existiria a possibilidade das minhas verificações falharem, certo? esse é o ponto... por mais que TEORICAMENTE não exista essa possibilidade, meu compilador/debugger não sabe disso. então ele espera que complete todos os fluxo possíveis para o meu método.

portanto, para resolver isso, minha função soma ficaria assim:

public int soma (int x, int y)
{
 if(x>0)
{
    return x+y;
}
if(y>0)
{
return x+y;
}

return x;

}


Nesse caso estou contemplando todas as rotas possíveis, porque mesmo que minhas duas condições falhem, o meu código retornará um valor X.

Ricardo Arraes

Ricardo Arraes
Responder

Mais Posts

12/06/2020

Ricardo Arraes

Fala Lucas,

mas o que acontece exatamente?
está retornando erro?
Responder

12/06/2020

Lucas

Fala Lucas,

mas o que acontece exatamente?
está retornando erro?


Ricardo obrigado por me responder, então tava indo contra as regras usando um get com if ai declarei dois atributos globais, porém fiquei com outro problema, vou postar meu programa todo aqui, se você conseguir me ajudar agradeço.
Responder

12/06/2020

Lucas

Fala Lucas,

mas o que acontece exatamente?
está retornando erro?


Primeiro criei duas interface que se chama InterfaceGerente e InterfaceCliente.

São os métodos que vou usar em ambas as classes.

InterfaceCliente

public interface InterfaceCliente {
boolean obterEmprestimo(int valor);
boolean pagarEmprestimo(int valor);
boolean negativado();
boolean realizarSaque(int valor);
}

InterfaceGerente

public interface InterfaceGerente {
boolean adicionarCliente(Cliente cliente);
void cobrarTodosEmprestimos();
}
Responder

12/06/2020

Lucas

Fala Lucas,

mas o que acontece exatamente?
está retornando erro?


Ai criei uma classe pessoa q é minha super classe é uma classe abstrata e não pode ser instanciada, mas seus atributos vão ser herdados pela classe Cliente e Gerente.

Classe Pessoa

[code=java]public abstract class Pessoa {
String nome;
int cpf;

Pessoa(String nome, int cpf){
this.nome = nome;
this.cpf = cpf;
}


abstract String retornaTipo();

}[/code]
Responder

12/06/2020

Lucas

Fala Lucas,

mas o que acontece exatamente?
está retornando erro?



Depois por último criei duas classes a Gerente e Cliente que estão me dando muito trabalho e fiquei perdino nelas, principalmente no método adicionarCliente e adicionarGerente, que não estou conseguindo fazer, quero usar o atributo da classe pessoa que é o CPF para distinguir um do outro.

Classe Cliente

public class Cliente extends Pessoa implements InterfaceCliente{
static final int dividaMaxima = 30000;
static final String tipo = "C";
private int valorContaCorrente;
private int valorDaDivida;

/* Construtor da Classe Cliente
* Este construtor invoca o construtor da classe Pessoa e inicializa os dois atributos
* do objeto que esta sendo instanciado.
*/
Cliente(String nome, int cpf, int valorInicial){
super(nome, cpf);
valorContaCorrente = valorInicial;
valorDaDivida = 0;
}

/* Metodo que retorna o valor do atributo tipo do objeto atual */
String retornaTipo() {
return tipo;
}

// Getters e Setters para usar nas outras subclasses, com o modificador protected que só não pode usar por outros pacotes.

protected int getValorContaCorrente() {
return valorContaCorrente;
}

protected int getValorDaDivida() {
return valorDaDivida;
}

protected void setValorContaCorrente(int valor) {
valorContaCorrente = valor;
}

protected void setValorDaDivida(int valor) {
valorDaDivida = valor;
}

public boolean obterEmprestimo(int valor) {
if ( valor <= 0) {
return false;
} else if ( valor + valorDaDivida > dividaMaxima) {
   return false;
} else {
      valor += valorDaDivida;
 valor += valorContaCorrente;
        return true;  
    }
}

public boolean pagarEmprestimo(int valor) {

if (valor <= 0) {
return false;
} else if ( valor > valorDaDivida || valor > valorContaCorrente) {
return false;
} else {
valor -= valorDaDivida;
valor -= valorContaCorrente;
return true;
}
}

public boolean negativado() {

if ( valorContaCorrente < valorDaDivida) {
return true;
} else {
return false;
}
}


// Método para sacar 
public boolean realizarSaque(int valor) {

if ( valor <= 0) {
return false;
} else if ( valor > valorContaCorrente) {
return false;
} else {
valor -= valorContaCorrente;
return true;
}
}
}
Responder

12/06/2020

Lucas

Fala Lucas,

mas o que acontece exatamente?
está retornando erro?


Classe Gerente

public class Gerente extends Pessoa implements InterfaceGerente{
private static final String tipo = "G";
private Cliente[] clientes;
private int numClientes;
private int valorContaCorrente;
private int valorDaDivida;

/* Construtor da Classe Gerente
* Este construtor invoca o construtor da classe Pessoa e inicializa os dois atributos
* do objeto que esta sendo instanciado.
*/
Gerente(String nome, int cpf){
super(nome, cpf);
clientes = new Cliente[20];
numClientes = 0;
}


/* Metodo que retorna o valor do atributo tipo do objeto atual */
String retornaTipo() {
return tipo;
}


/* Metodo para imprimir informacoes sobre os clientes gerenciados pelo gerente atual
*/
void imprimirClientes(){
Cliente atual;
System.out.println("\\tNumero de clientes: " + numClientes);
for (int c=0; c < numClientes; c++){
atual = clientes[c];
System.out.println("\\t" + (c+1) + "\\t" + atual.retornaTipo() + "\\t" + atual.nome + "\\t" + atual.cpf + "\\t" + atual.getValorContaCorrente() + "\\t" + atual.getValorDaDivida() + "\\t" + atual.negativado());
}
}


public boolean adicionarCliente(Cliente cliente) {

if ( this.numClientes == 20) {
return false;
}
for ( int j=0; j < numClientes; j++) { // Perorrer o arranjo.  
if ( clientes.cpf[j] == this.cpf ) {
return false;

    } else {
clientes[numClientes] = cliente;
numClientes += 1;
return true;
}
}
    }

public void cobrarTodosEmprestimos() {


if ( valorDaDivida == 0) {
valorContaCorrente = valorContaCorrente;
}
if ( valorContaCorrente  >= valorDaDivida ) {
valorContaCorrente = valorContaCorrente - valorDaDivida;
}
if ( valorContaCorrente < valorDaDivida) {
valorDaDivida = valorDaDivida - valorContaCorrente;
valorContaCorrente = 0;
}
}
}
Responder

12/06/2020

Lucas

Fala Lucas,

mas o que acontece exatamente?
está retornando erro?


Minha ideia é por exemplo: se o número tanto de gerentes for igual a 20 ele não precisa fazer nada é só retornar falso, caso contrário
o gerente já consta no arranjo então usaria o cpf para verificar e se estiver não precisa ser inserido e o método retornaria falso e por último o gerente passado como parâmetro que vai ser adicionado não consta no arranjo ai o gerente precisa ser adicionado na posição numGerente, incrementaria 1 e retornaria verdadeiro.

Fiz outra classe só para testar o programa com o método main.
Responder

12/06/2020

Lucas

Fala Lucas,

mas o que acontece exatamente?
está retornando erro?


Estou com problema nessa classe adicionar cliente e adicionar gerente.
Responder

12/06/2020

Ricardo Arraes

Beleza, Lucas

analisei rápido teu código e creio que encontrei um erro no método que você disse estar tendo dificuldade.
serie interessante se você encaminhasse a exceção que está retornando ou explicar exatamente qual a dificuldade que você está tendo.

Mas verifique se isso resolve:

Na classe Gerente, no método AdicionarCliente, verifique que você está indexando o atributo cpf em vez do array em si:

ERRADO:
if ( clientes.cpf[j] == this.cpf ) 


CORRETO:
if ( clientes[j].cpf == this.cpf ) 


Responder

12/06/2020

Ricardo Arraes

Fala Lucas,

mas o que acontece exatamente?
está retornando erro?


Minha ideia é por exemplo: se o número tanto de gerentes for igual a 20 ele não precisa fazer nada é só retornar falso, caso contrário
o gerente já consta no arranjo então usaria o cpf para verificar e se estiver não precisa ser inserido e o método retornaria falso e por último o gerente passado como parâmetro que vai ser adicionado não consta no arranjo ai o gerente precisa ser adicionado na posição numGerente, incrementaria 1 e retornaria verdadeiro.

Fiz outra classe só para testar o programa com o método main.


Acabei respondendo antes de você mandar isso.
Entendi tua dificuldade e acho que o problema é justamente isso que lhe mandei, verifique e confirme aqui, por favor!
Responder

12/06/2020

Lucas

Fala Lucas,

mas o que acontece exatamente?
está retornando erro?


Minha ideia é por exemplo: se o número tanto de gerentes for igual a 20 ele não precisa fazer nada é só retornar falso, caso contrário
o gerente já consta no arranjo então usaria o cpf para verificar e se estiver não precisa ser inserido e o método retornaria falso e por último o gerente passado como parâmetro que vai ser adicionado não consta no arranjo ai o gerente precisa ser adicionado na posição numGerente, incrementaria 1 e retornaria verdadeiro.

Fiz outra classe só para testar o programa com o método main.


Acabei respondendo antes de você mandar isso.
Entendi tua dificuldade e acho que o problema é justamente isso que lhe mandei, verifique e confirme aqui, por favor!


Acabou não resolvendo, fala "missing return startament", mas verifiquei mais de 6 vezes e não tem chaves dispersa no código, não sei se eu interpretei certo através do código rs.
Responder

12/06/2020

Lucas

Fala Lucas,

mas o que acontece exatamente?
está retornando erro?


Minha ideia é por exemplo: se o número tanto de gerentes for igual a 20 ele não precisa fazer nada é só retornar falso, caso contrário
o gerente já consta no arranjo então usaria o cpf para verificar e se estiver não precisa ser inserido e o método retornaria falso e por último o gerente passado como parâmetro que vai ser adicionado não consta no arranjo ai o gerente precisa ser adicionado na posição numGerente, incrementaria 1 e retornaria verdadeiro.

Fiz outra classe só para testar o programa com o método main.


Acabei respondendo antes de você mandar isso.
Entendi tua dificuldade e acho que o problema é justamente isso que lhe mandei, verifique e confirme aqui, por favor!



Tinha faltado só mais uma classe que é o banco, que deixei o método adicionar gerente.

O adicionar gerente é a mesma coisa que adicionar cliente a diferença é q tem 10 gerentes e 20 clientes para cada gerente.
cada gerente pode atender 20 clientes.

CLASSE BANCO

public class Banco {
private Gerente[] gerentes;
private int numGerentes;

/* Construtor da Classe Banco
* Inicializa os dois atributos do objeto que esta sendo instanciado.
*/
Banco(){
gerentes = new Gerente[10];
numGerentes = 0;
}


/* Metodo para Imprimir informacoes gerais sobre o banco atual
*/
void imprimir(){
System.out.println("#########################################################################");
System.out.println("Imprimindo informacoes do banco.");
System.out.println("Ha " + numGerentes + " gerente(s) neste banco.");
Gerente ger;
for (int g=0; g < numGerentes; g++){
ger = gerentes[g];
System.out.println("Gerente: " + ger.nome + "\\tCPF: " + ger.cpf);
ger.imprimirClientes();
}
System.out.println("#########################################################################");
}

boolean adicionarGerente(Gerente gerente){

if ( this.numGerentes  == 10) {
return false;
}
for ( int p=0; p < numGerentes; p++) { // Perorrer o arranjo.  
if ( this.gerentes[p].cpf == gerente.cpf ) {
return false;
}
    }
for( int n=0; n < numGerentes; n++) {
if (gerente.cpf != this.gerentes[n].cpf){
gerentes[numGerentes] = gerente;
numGerentes += 1;
return true;
}
}
}
}
Responder

12/06/2020

Lucas

Fala Lucas,

mas o que acontece exatamente?
está retornando erro?


Minha ideia é por exemplo: se o número tanto de gerentes for igual a 20 ele não precisa fazer nada é só retornar falso, caso contrário
o gerente já consta no arranjo então usaria o cpf para verificar e se estiver não precisa ser inserido e o método retornaria falso e por último o gerente passado como parâmetro que vai ser adicionado não consta no arranjo ai o gerente precisa ser adicionado na posição numGerente, incrementaria 1 e retornaria verdadeiro.

Fiz outra classe só para testar o programa com o método main.


Acabei respondendo antes de você mandar isso.
Entendi tua dificuldade e acho que o problema é justamente isso que lhe mandei, verifique e confirme aqui, por favor!


Troquei meu else pelo for não deu certo ainda e verifiquei de novo meu código e deixei gerente.cpf é o q quero adicionar e os gerentes[].cpf é os gerentes do meu arranjo, só que da ainda esse "missing return startament".
Responder

13/06/2020

Lucas

Fala Lucas,

mas o que acontece exatamente?
está retornando erro?


Minha ideia é por exemplo: se o número tanto de gerentes for igual a 20 ele não precisa fazer nada é só retornar falso, caso contrário
o gerente já consta no arranjo então usaria o cpf para verificar e se estiver não precisa ser inserido e o método retornaria falso e por último o gerente passado como parâmetro que vai ser adicionado não consta no arranjo ai o gerente precisa ser adicionado na posição numGerente, incrementaria 1 e retornaria verdadeiro.

Fiz outra classe só para testar o programa com o método main.


Acabei respondendo antes de você mandar isso.
Entendi tua dificuldade e acho que o problema é justamente isso que lhe mandei, verifique e confirme aqui, por favor!



Tinha faltado só mais uma classe que é o banco, que deixei o método adicionar gerente.

O adicionar gerente é a mesma coisa que adicionar cliente a diferença é q tem 10 gerentes e 20 clientes para cada gerente.
cada gerente pode atender 20 clientes.

CLASSE BANCO

public class Banco {
private Gerente[] gerentes;
private int numGerentes;

/* Construtor da Classe Banco
* Inicializa os dois atributos do objeto que esta sendo instanciado.
*/
Banco(){
gerentes = new Gerente[10];
numGerentes = 0;
}


/* Metodo para Imprimir informacoes gerais sobre o banco atual
*/
void imprimir(){
System.out.println("#########################################################################");
System.out.println("Imprimindo informacoes do banco.");
System.out.println("Ha " + numGerentes + " gerente(s) neste banco.");
Gerente ger;
for (int g=0; g < numGerentes; g++){
ger = gerentes[g];
System.out.println("Gerente: " + ger.nome + "\\\\\\\\tCPF: " + ger.cpf);
ger.imprimirClientes();
}
System.out.println("#########################################################################");
}

boolean adicionarGerente(Gerente gerente){

if ( this.numGerentes  == 10) {
return false;
}
for ( int p=0; p < numGerentes; p++) { // Perorrer o arranjo.  
if ( this.gerentes[p].cpf == gerente.cpf ) {
return false;
}
    }
for( int n=0; n < numGerentes; n++) {
if (gerente.cpf != this.gerentes[n].cpf){
gerentes[numGerentes] = gerente;
numGerentes += 1;
return true;
}
}
}
}


Cara, essa mensagem de erro "missing return statement" indica que algum método do seu programa não está contemplando todos os fluxos possíveis. Em outras palavras, em algum método seu (que exige retorno) existe um caminho que o fluxo pode seguir em que ele acabará não retornando nada.

pelo que analisei teu código, acredito que está na tua função AdicionarGerente. Percebe que você colocou alguns if's para verificar algumas condições, mas e se todas as condições forem falsas? pelo que percebi é esse o fluxo que está faltando. Falta você colocar um return em caso de todas as suas condições serem falsas.

Por mais que você garanta(através de outras funções e etc) que uma dessas condições será atendida, o seu compilador/debugger muitas vezes não tem como saber, então ele espera que você complete o fluxo inteiro.

Exemplo:

eu tenho uma função que soma dois numeros:

public void main()
{
    int x=1, y=2;
    soma(x, y)

}

public int soma (int x, int y)
{
 if(x>0)
{
    return x+y
}
if(y>0)
{
return x+y
}

}


veja que nesse trecho simples, eu fiz duas verificações de propósito(obviamente isso é apenas um exemplo extremamente simples).
verifiquei se x é maior que zero, e verifiquei se y é maior que zero. na minha função main(), eu passei atribui aos parametros os valores 1 e 2. Portanto, teoricamente não existiria a possibilidade das minhas verificações falharem, certo? esse é o ponto... por mais que TEORICAMENTE não exista essa possibilidade, meu compilador/debugger não sabe disso. então ele espera que complete todos os fluxo possíveis para o meu método.

portanto, para resolver isso, minha função soma ficaria assim:

public int soma (int x, int y)
{
 if(x>0)
{
    return x+y;
}
if(y>0)
{
return x+y;
}

return x;

}


Nesse caso estou contemplando todas as rotas possíveis, porque mesmo que minhas duas condições falhem, o meu código retornará um valor X.




Ricardo muito obrigado, deu certo agora, posso prosseguir com o andamento do meu programa agora.
Agradeço muito cara você é demais, continue assim.
Responder

13/06/2020

Ricardo Arraes

Fala Lucas,

mas o que acontece exatamente?
está retornando erro?


Minha ideia é por exemplo: se o número tanto de gerentes for igual a 20 ele não precisa fazer nada é só retornar falso, caso contrário
o gerente já consta no arranjo então usaria o cpf para verificar e se estiver não precisa ser inserido e o método retornaria falso e por último o gerente passado como parâmetro que vai ser adicionado não consta no arranjo ai o gerente precisa ser adicionado na posição numGerente, incrementaria 1 e retornaria verdadeiro.

Fiz outra classe só para testar o programa com o método main.


Acabei respondendo antes de você mandar isso.
Entendi tua dificuldade e acho que o problema é justamente isso que lhe mandei, verifique e confirme aqui, por favor!



Tinha faltado só mais uma classe que é o banco, que deixei o método adicionar gerente.

O adicionar gerente é a mesma coisa que adicionar cliente a diferença é q tem 10 gerentes e 20 clientes para cada gerente.
cada gerente pode atender 20 clientes.

CLASSE BANCO

public class Banco {
private Gerente[] gerentes;
private int numGerentes;

/* Construtor da Classe Banco
* Inicializa os dois atributos do objeto que esta sendo instanciado.
*/
Banco(){
gerentes = new Gerente[10];
numGerentes = 0;
}


/* Metodo para Imprimir informacoes gerais sobre o banco atual
*/
void imprimir(){
System.out.println("#########################################################################");
System.out.println("Imprimindo informacoes do banco.");
System.out.println("Ha " + numGerentes + " gerente(s) neste banco.");
Gerente ger;
for (int g=0; g < numGerentes; g++){
ger = gerentes[g];
System.out.println("Gerente: " + ger.nome + "\\\\\\\\\\\\\\\\tCPF: " + ger.cpf);
ger.imprimirClientes();
}
System.out.println("#########################################################################");
}

boolean adicionarGerente(Gerente gerente){

if ( this.numGerentes  == 10) {
return false;
}
for ( int p=0; p < numGerentes; p++) { // Perorrer o arranjo.  
if ( this.gerentes[p].cpf == gerente.cpf ) {
return false;
}
    }
for( int n=0; n < numGerentes; n++) {
if (gerente.cpf != this.gerentes[n].cpf){
gerentes[numGerentes] = gerente;
numGerentes += 1;
return true;
}
}
}
}


Cara, essa mensagem de erro "missing return statement" indica que algum método do seu programa não está contemplando todos os fluxos possíveis. Em outras palavras, em algum método seu (que exige retorno) existe um caminho que o fluxo pode seguir em que ele acabará não retornando nada.

pelo que analisei teu código, acredito que está na tua função AdicionarGerente. Percebe que você colocou alguns if's para verificar algumas condições, mas e se todas as condições forem falsas? pelo que percebi é esse o fluxo que está faltando. Falta você colocar um return em caso de todas as suas condições serem falsas.

Por mais que você garanta(através de outras funções e etc) que uma dessas condições será atendida, o seu compilador/debugger muitas vezes não tem como saber, então ele espera que você complete o fluxo inteiro.

Exemplo:

eu tenho uma função que soma dois numeros:

public void main()
{
    int x=1, y=2;
    soma(x, y)

}

public int soma (int x, int y)
{
 if(x>0)
{
    return x+y
}
if(y>0)
{
return x+y
}

}


veja que nesse trecho simples, eu fiz duas verificações de propósito(obviamente isso é apenas um exemplo extremamente simples).
verifiquei se x é maior que zero, e verifiquei se y é maior que zero. na minha função main(), eu passei atribui aos parametros os valores 1 e 2. Portanto, teoricamente não existiria a possibilidade das minhas verificações falharem, certo? esse é o ponto... por mais que TEORICAMENTE não exista essa possibilidade, meu compilador/debugger não sabe disso. então ele espera que complete todos os fluxo possíveis para o meu método.

portanto, para resolver isso, minha função soma ficaria assim:

public int soma (int x, int y)
{
 if(x>0)
{
    return x+y;
}
if(y>0)
{
return x+y;
}

return x;

}


Nesse caso estou contemplando todas as rotas possíveis, porque mesmo que minhas duas condições falhem, o meu código retornará um valor X.




Ricardo muito obrigado, deu certo agora, posso prosseguir com o andamento do meu programa agora.
Agradeço muito cara você é demais, continue assim.


de nada! só não esquece de curtir aqui pra galera saber que teve solução :)
boa sorte!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar