switch em JAVA

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:
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?
 
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?
 
Back
Topo