1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

switch em JAVA

Discussão em 'Programação' iniciada por ungah, 22 de Janeiro de 2009. (Respostas: 2; Visualizações: 3648)

  1. ungah

    ungah Suspenso

    boas. estava a tentar fazer um programa onde usa-se um switch e tambem usa-se funçoes. queria fazer um programa k tivesse um menu com varias opçoes (ler sequencia, calcular maximo, min etc etc). so que isto nao me funciona bem (por exemplo em ler sequencia aparece em branco, no max e min da um numero absurdo, em media da erro). podem ajudar-me? tenho o seguinte (desculpem ser um bocado extenso):

    Código:
    public static void main (String[] args)
      {
        menu();
      }
     
      static void menu()
      {
        int op, cont=0, soma=0;
        int[] num=new int[50];
     
        do
        {
          println();
          println("1 - Ler a sequência");
          println("2 - Escrever a sequência no ecrã");
          println("3 – Calcular o máximo da sequência");
          println("4 - Calcular o mínimo da sequência");
          println("5 – Calcular a média da sequência");
          println("6 - Detectar se é uma sequência só constituída por números pares");
          println("7 - Fechar o programa");
          op=readInt("Opção -> ");
          println();
     
        switch(op)
        {
          case 1:
          {
            lerSeq(num);
            break;
          } 
          case 2:
          {
            escrever(num, cont);
            break;
          }
          case 3:
          {
            max(num, cont);
            break;
          }
          case 4:
          {
            min(num, cont);
            break;
          }
          case 5:
          {
            media(cont, soma);
            break;
          }
          case 6:
          {
            pares(num, cont);
            break;
          }
          case 7:
          {
            sair();
            break;
          }
        } 
       }
        while(op !=7);
      }
     
      static void lerSeq(int[] num)
      {
        int valor, cont=0, soma=0;
     
        do
        {
          valor=readInt("Valor para a posição "+(cont+1)+": ");
          if(valor>0)
          {
            num[cont]=valor;
            soma=soma+valor;
            cont++;
          }
        }
        while (valor>0 && cont<num.length); 
      }
     
      static void escrever(int [] num, int cont)
      {
        for(int i=0;i<cont;i++)
          print(num[i]+" ");
        println();
      }
     
      static void max(int[] num, int cont)
      {
        int max=Integer.MIN_VALUE;
     
        for(int i=0;i<cont;i++)
          if (num[i]>max)
            max=num[i];
        println("O maximo da sequencia é: "+max);
      }
     
      static void min(int[] num, int cont)
      {
        int min=Integer.MAX_VALUE;
     
        for(int i=0; i<cont;i++)
          if (num[i]<min)
            min=num[i];
        println("O minimo da sequencia é: "+min);
      }
     
      static void media (int cont, int soma)
      {
        double media;
     
        media=(soma/cont);
     
        println("A media da sequencia é: "+media);
      }
     
      static void pares (int[] num, int cont)
      {
        boolean pares=true;
        for(int i=0;i<cont;i++)
          if(num[i]%2 !=0)
            pares=false;
     
        if(pares=false)
          println("A sequencia não é constituida apenas por numeros pares.");
        else
          println("A sequencia é constituida apenas por numeros pares.");
      }
     
      static void sair()
      {
        char c;
        do
          c=readChar("Tem a certeza que pretende sair (s/n)? ");
        while (c!='s' && c!='S' && c!='n' && c!='N');
     
        if(c=='S' || c=='s')
        {
          println("O programa terminou.");
          return;
        }
        else
          menu();
      }
    
     
    Última edição: 22 de Janeiro de 2009
  2. xuxaki

    xuxaki Power Member

    da funcao lerSeq creio que o problema está em não inicializares a variável "valor", e não entra no do{}while().
    Das outras funções não vi com grande atenção, mas estás em alguma altura a atribuir valores ao array num?
     
  3. ungah

    ungah Suspenso

    iniciar a variavel nao é pois nao da erros de compilador. o problema penso que esta em nao fazer return do array na funçao lerSeq. mas tipo, nessa funçao eu preciso tanto do array como da variavel cont. preciso de fazer return das duas. como faço?
     

Partilhar esta Página