Dúvida simples

11 respostas
C

Olá… tenho uma dúvida simples:

class Exemplo
{
    double algumaCoisa (double x)
       {
          .....    

//essa parte é que interessa
     
       if ((x > 1) || (x < 0))   
      System.out.println ("Esse valor não é válido.\nDigite um valor entre 0 e 1.");
        
     if((x >= 0) && (x <= 1))  
        {   //daí eu incluo um laço 
         while (.....)   
         {
          ....
          ....
         }  
       }   

    //aqui que  dando problema   
    return algumaCoisa;
   
  }
}

A minha dúvida é a seguinte:
Eu preciso que o programa reconheça somente valores entre 0 e 1; se o valor digitado for menor que zero ou maior do que 1, então precisa mandar uma mensagem de erro… se o número for entre 0 e 1, então vai entrar no laço para calcular o que eu quero…
Só que tem o return… se a pessoa digita um valor menor do que 0 ou maior do que 1, ele vai imprimir e retornar alguma coisa… como eu faço para que isso não aconteça? Fazer um jeito que só retorne o valor quando o valor digitado for entre 0 e 1 e só imprima quando o valor for entre 0 e 1?
Valeu :smiley:

11 Respostas

J

Faça um do-while para que só continue caso o valor esteja entre 0 e 1

Exemplo, algo do tipo:

do {
      //Aqui fica lendo o valor até ser entre 0 e 1
} while (x < 0 || x > 1);
//Aqui em baixo vc coloca o seu processamento, sabendo que o valor esta entre 0 e 1 //seguramente

:wink:

J

“Candahar”:
Olá… tenho uma dúvida simples:

class Exemplo
{
    double algumaCoisa (double x)
       {
          .....    

//essa parte é que interessa
     
       if ((x > 1) || (x < 0))   
      System.out.println ("Esse valor não é válido.\nDigite um valor entre 0 e 1.");
        
     if((x >= 0) && (x <= 1))  
        {   //daí eu incluo um laço 
         while (.....)   
         {
          ....
          ....
         }  
       }   

    //aqui que  dando problema   
    return algumaCoisa;
   
  }
}

A minha dúvida é a seguinte:
Eu preciso que o programa reconheça somente valores entre 0 e 1; se o valor digitado for menor que zero ou maior do que 1, então precisa mandar uma mensagem de erro… se o número for entre 0 e 1, então vai entrar no laço para calcular o que eu quero…
Só que tem o return… se a pessoa digita um valor menor do que 0 ou maior do que 1, ele vai imprimir e retornar alguma coisa… como eu faço para que isso não aconteça? Fazer um jeito que só retorne o valor quando o valor digitado for entre 0 e 1 e só imprima quando o valor for entre 0 e 1?
Valeu :D

Bom Dia!!!

Amigo, você pode colocar o return dentro do laço do segundo if ou então qdo entrar no primeiro controle de seleção “if” você dá um “return;” vai lhe retornar um valor nulo e cancelar o processo.

if((x &lt; 0) || (x &gt; 1))  
   {
     System.out.println("...");
     return;
   }
I

Só mudar o lugar do return... pra dentro do if......

ai só vai retornar qdo o valor digitado estiver entre 0 e 1

olha a mudança no código abaixo!!!

class Exemplo 
{ 
    double algumaCoisa (double x) 
       { 
          .....    

//essa parte é que interessa 
      
       if ((x > 1) || (x < 0))    
      System.out.println ("Esse valor não é válido.\nDigite um valor entre 0 e 1."); 
        
     if((x >= 0) && (x <= 1))  
        {   //daí eu incluo um laço 
         while (.....)    
         { 
          .... 
          .... 
         }  
       
        return algumaCoisa; 
       }    

    //aqui que  dando problema    

    
  } 
}
C
<blockquote>

if((x < 0) || (x > 1))

{

System.out.println("…");

return;

}</blockquote>

Olá Jeferson… eu fiz isso, só que dá erro de sintaxe… aqui fala que precisa retornar alguma coisa…

C
"italobraz":
Só mudar o lugar do return... pra dentro do if......

ai só vai retornar qdo o valor digitado estiver entre 0 e 1

olha a mudança no código abaixo!!!

class Exemplo 
{ 
    double algumaCoisa (double x) 
       { 
          .....    

//essa parte é que interessa 
      
       if ((x > 1) || (x < 0))    
      System.out.println ("Esse valor não é válido.\nDigite um valor entre 0 e 1."); 
        
     if((x >= 0) && (x <= 1))  
        {   //daí eu incluo um laço 
         while (.....)    
         { 
          .... 
          .... 
         }  
       
        return algumaCoisa; 
       }    

    //aqui que  dando problema    

    
  } 
}

Olá Italobraz
Eu fiz isso, só que aí que tá o problema... se eu coloco o return dentro do segundo if, vai precisar de outro return por causa do método double... entende? Então vai retornar um return do segundo if e vai precisar um return para o método double...

I

é q naum sei o funcionamento do programinha…

o q o JAVATECO disse naum funcionou tbm???

C

“JavaTeco”:
Faça um do-while para que só continue caso o valor esteja entre 0 e 1

Exemplo, algo do tipo:

do {
      //Aqui fica lendo o valor até ser entre 0 e 1
} while (x < 0 || x > 1);
//Aqui em baixo vc coloca o seu processamento, sabendo que o valor esta entre 0 e 1 //seguramente

:wink:

Com o Moderador eu não discuto… :amo:
Sei lá, eu tentei fazer isso mas não funcionou… mas com certeza eu que estou errado :lol:
O problema acho que é o método… chamei o método de double, então precisa de um return, certo? :sentido:
Valew

I

é mais fácil pra gente poder resolver a sua dúvida…

vc postando o q o programa tem q fazer… e a máximo possivel q vc poder do código…

qto ao método AlgumaCoisa

vc declarou como double algumaCoisa (double x)

por causa desse double, em negrito, o método tem q retornar alguma valor no tipo double

C
class Calcular
{
double ln (double umMaisL)   // Método para calcular o logaritmo neperiano
  {
    double epsilon = 1.0e-8;   // valor da precisão
    double L = umMaisL - 1;                   
    int w = 1;
    double termo = L;
    double ln = termo;
    
    if (umMaisL > 1 || umMaisL < 0)    // Não é válido para números menores do que zero e maiores do que um
    {
      System.out.println ("Esse valor não é válido.\nDigite um valor entre 0 e 1.");
    }

    if(umMaisL >= 0 && umMaisL <= 1)    // Válida para números entre zero e um.
    {
      while (termo * termo > epsilon * epsilon)   // Evita a comparação de um termo negativo com o epsilon
      {
        w = w + 1;
        termo = -termo * L * (w - 1)/ w;
        ln = ln + termo;
      }
    }
        
    return ln;
  }

Eu sei que é um código bem escroto, mas só funciona pra números entre 0 e 1… É uma série de Taylor… mas isso em si não é o importante…
Por exemplo, se eu coloco o número 2, então ele imprime que o número não é válido e ele retorna o ln. Mas não é pra retornar nada, só imprimir…
Pra números entre 0 e 1 tá funcionando…
Não sei se melhorou ou piorou depois desse código… :lol:
Valew

J

“Candahar”:
“JavaTeco”:
Faça um do-while para que só continue caso o valor esteja entre 0 e 1

Exemplo, algo do tipo:

do {
      //Aqui fica lendo o valor até ser entre 0 e 1
} while (x < 0 || x > 1);
//Aqui em baixo vc coloca o seu processamento, sabendo que o valor esta entre 0 e 1 //seguramente

:wink:

Com o Moderador eu não discuto… :amo:
Sei lá, eu tentei fazer isso mas não funcionou… mas com certeza eu que estou errado :lol:
O problema acho que é o método… chamei o método de double, então precisa de um return, certo? :sentido:
Valew

Nem fala assim… todo mundo aqui é igual… e outra… eu posso errar tb… e podem me corrigir…

É o seguinte… do jeito que vc esta requerendo fazer, não é a melhor solução… faça o seguinte… faça a validação fora do método… ou seja, o valor que irá ser passado como parâmetro deverá estar entre 0 e 1… dentro do método faça uma verificação, como vc estava fazendo… caso esteja fora do limite, gere uma exceção. Essa exceção só informará que o limite deve entre 0 e 1. Mas faça a validação fora do método, por exemplo, com o código que eu te passei anteriormente… Ai vc pode ser perguntar… pra que gerar uma exeção se eu já vou entrar com o valor validado… é que se alguém for usar este método terá como saber qual o limite… blz?

C

Valeu cara… eu ainda não consegui fazer mas estou pensando em como fazer isso…
Só mais uma perguntinha…
Como eu posso verificar se o número digitado está entre 0 e 1 ANTES de entrar no método? Não entendi isso… :sentido:

Criado 24 de maio de 2004
Ultima resposta 24 de mai. de 2004
Respostas 11
Participantes 4