Chamada de metodos

10 respostas
aprendizdefeiticeito

boas pessoal sou novo por aqui preciso de uma ajuda nao estou a perceber é que aparece dois erros na chamada dos metodos tipo a variavel z e double d . O programa é para ajudar na gestao de livros numa bibioteca durante um mes.
o levantamento so e feito de 1 a 9 de cada mes .
A devolucao deve ser feita no prazo maximo de 7 dias apos leantamento
caso de nao comprir o prazo aplica-se multas 3% se demorar 21 dias
2% se demorar 14 dias 1% se demorar mais de 7 diase nao ha multa se
se cumprir com o prazo O codigo está aí

public class Biblioteca
{
  public static void main(String args[])
  {
   double x = getDataLevantamento();
   double b = getPreco(x);
   double c = verMulta(d,b);
   double y = getDataDevolucao();
   double d = permanencia(x,y,z);
  

  }

     public static double getPreco(double preco)
     {

      do
      {
       System.out.println("introduza o preco do livro");
       preco=Le.umDouble();
        if(preco>100&&preco<999)
       System.out.println("o preco de livros varia de 100 a 999");
      }while(preco>100&&preco<999);
       return preco;
     }

         public static double getDataLevantamento()
         {
          double dataLevantamento;
          do
          {
           System.out.println("introduza data de levantamento");
           dataLevantamento=Le.umDouble();
            if(dataLevantamento<1 && dataLevantamento>9)
           System.out.println("nesses dias nao se levanta livros");
          }while(dataLevantamento<1 && dataLevantamento>9);
           return dataLevantamento;
         }

           public static double getDataDevolucao()
           {
            double devolucao;
            do
            {
             System.out.println("introduza data de devolucao");
             devolucao=Le.umDouble();
              if(devolucao<1 && devolucao>30)
             System.out.println("os dias variam de 1 ate 30");
            }
            while(devolucao<1 && devolucao>30);
             return devolucao;
           }

              public static double verMulta(double permanencia,double preco)
               {
                if(permanencia>21)
                return preco*0.03;
                 else if(permanencia>14)
                 return preco*0.02;
                  else if (permanencia>7)
                  return preco*0.01;
                   else
                   return preco*0;
               }

                 public static double permanencia(double x,double y,double z)
                 {
                  double permanencia,dataDevolucao, dataLevantamento;
                  permanencia=dataDevolucao-dataLevantamento;
                  return permanencia;
                 }
}

10 Respostas

Giulliano

diga pra gente qual é o erro…

kinow

Oi aprendizdefeiticeiro,

acho que por mágica alguma de suas variáveis desapareceu do código hehehehe. Revisa direitinho se você está declarando as variáveis antes de utilizá-las e depois fala se ocorrem mais erros :wink:

Abraços

aprendizdefeiticeito

o erro da linha 7 diz:
double c=verMulta(d,b)
symbol: variavel d

outro erro e na linha 9 diz:
double d=permanencia(x,y,z)
symbol:variable z

jolivier

Meu caro, eu já não estou entendendo porque voce declaro um parametro preço no getPreço e na claração da variavel b = getPreço(x) voce declara uma parametro x que recebe getDataDeLevantamento()

Obs: os metodos getxxx por padrão não recebe parametros so retor, mas não que dizer que não possa vazer da for que quizer, é so por questão de entendimento.

jolivier

O que você vai fazer com a variável z aonde ela se encaixa

aprendizdefeiticeito

retirei o parametro que estava no metodo getPreco deixei sem parametro getPreco() acho que era desnecessario, o problema esta mesmo na variavel z ela e que esta criar problemas. penso que o problema esta na chamado do metodo permanencia. Acho que nao estou a consiguir chamar esse metodo permanencia .

a variavel z vem do parametro double x do metodo permancencia(double x) linha 66.

jolivier
double x = getDataLevantamento();

double b = getPreco(x);

double c = verMulta(d,b);

double y = getDataDevolucao();

double d = permanencia(x,y,z);

meu caro, x recebe getDataLevantamento(), y recebe getDataDevolucao(), e o z serve para que no seu programa, vai receber o que. não estou entendendo.

aprendizdefeiticeito
double x = getDataLevantamento();

double b = getPreco(x);

double c = verMulta(d,b);

double y = getDataDevolucao();

double d = permanencia(x,y,z);

meu caro, x recebe getDataLevantamento(), y recebe getDataDevolucao(), e o z serve para que no seu programa, vai receber o que. não estou entendendo.


consigui por o programa a correr apesar de alguns erros de logica mas isso e facil de resolver

quanto a ao codigo variavel z nunca devia ter existido. sabe eu pensei que como ia usar tres variaveis no metodo permanencia devia colocar as tres como parametros e quando ia chamar colocava os tres parametros no main aí surgia o erro do symbol: variable z que nao era encontrado no metodo permanencia

quanto ao metodo getPreco() devia estar sem parametros mesmo.

valeu pessoal …yap…yap…yap

wariows
<blockquote><div class="quote-author">aprendizdefeiticeito:</div>double x = getDataLevantamento();

double b = getPreco(x);

*double c = verMulta(d,b);

double y = getDataDevolucao();

**double d = permanencia(x,y,z);

meu caro, x recebe getDataLevantamento(), y recebe getDataDevolucao(), e o z serve para que no seu programa, vai receber o que. não estou entendendo.


consigui por o programa a correr apesar de alguns erros de logica mas isso e facil de resolver

quanto a ao codigo variavel z nunca devia ter existido. sabe eu pensei que como ia usar tres variaveis no metodo permanencia devia colocar as tres como parametros e quando ia chamar colocava os tres parametros no main aí surgia o erro do symbol: variable z que nao era encontrado no metodo permanencia

quanto ao metodo getPreco() devia estar sem parametros mesmo.

valeu pessoal …yap…yap…yap

  • d só é declarado mais a frente, então vc não pode utilizá-lo agora, só depois que declarar!
    ** z de onde vc tirou esse z?? ELE NEM SEQUER É DECLARADO!
peczenyj

Qual o motivo pra não usar nomes de variaveis e atributos elucidativos?

Afinal x e y podem fazer sentido em coordenadas cartesianas, mas em uma biblioteca são confusos, pra dizer o mínimo.

double x = getDataLevantamento();  
    double b = getPreco(x);

getPreco recebe a DataLevantamento por que motivo? Alias vc não tem orientação a objetos, tem um programa procedural muito amarrado a interface com o usuario.

Numa Biblioteca vc tem Livros e Usuarios, seria interessante vc partir desse principio, deixando a interface com o usuario por ultimo (alias defendo que a interface com o usuario deveria ser feita num momento posterior ao seu aprendizado dos fundamentos da linguagem, senão vc fica se preocupando com menus, com fazer perguntas e validar certos formatos que são irrelevantes para o cerne do problema. a interface com o usuario deveria vir a parte, num momento que vc domina certas estruturas e ai faz algo util, bem feito, seja textual, swing ou web. mas fazer o que…)

Criado 8 de setembro de 2008
Ultima resposta 8 de set. de 2008
Respostas 10
Participantes 6