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

Java - problema com dimensão de um ARRAY

Discussão em 'Programação' iniciada por Becks, 17 de Janeiro de 2008. (Respostas: 2; Visualizações: 1902)

  1. Boas, eu estou com um problema em java que é o seguinte. Pedem-me um programa para inserir até ao máx de 13 notas, têm a restriçao de serem >=0 e <=20, mas tem de ter um indicador de paragem que é o 99. Acontece que não consigo fazer sem ter a dimensao do array fixa.. Eu queria que variasse, do estilo se eu inserisse 3 valores ficava so com a dim 2 percebem?? Usamos o pacote da univ aveiro pt.ua.prog.WIO; Aqui fica o prog a ver se alguém me poderá ajudar...

    import static pt.ua.prog.WIO.*;

    public class Notas
    {

    public static void main (String [] args)
    {
    int nota;
    int lista[]=new int[12];
    for(int i=0,j=0;i<13;i++)
    {
    do {
    nota=readInt("Insira nota");
    }
    while (nota>20&&nota<0&&nota==99);
    if (nota>=0&&nota<=20) {lista[j]=nota;j++;}
    if(nota<0||nota>20) writelnString("Cuidado com os valores! Valor introduzido é inválido!");
    if(nota==99) break;
    if(j==12) break;

    }
    for(int k=0;k<lista.length;k++)
    {
    writeInt(lista[k]);
    writelnString("");
    }



    }
     
    Última edição: 17 de Janeiro de 2008
  2. CoolMaster

    CoolMaster Power Member

    Uma maneira simples é fazer o loop enquanto a nota for diferente de 0 e o array não tenha atingido o limite.
     
  3. Stinger Pt

    Stinger Pt Power Member

    e facil fazes uma função INT em vez de VOID, no ciclo for fazes um contador: contador++; e no fim poes return contador.

    O contador vai ficar guardado na variavel que puseres a igual a função. EX:

    Uma maneira mais facil era:
    import static pt.ua.prog.WIO.*;

    public class Notas
    {

    public static void main (String [] args)
    {
    int cont;
    int lista[]=new int[12];

    cont = lervalores(lista)
    listar(lista, cont) //a função chama o cont que o numero de alunos introduzidos para se usar no i<cont
    }

    static int lervalores(int lista[])
    {
    int i;
    for (i=0; i<lista.length; i++)
    {
    int aux;
    do {
    writeString("aluno" + (i+1) + ": "); //para ver o numero do aluno que keres meter
    aux = readInt();
    if(aux==99) break;
    a = aux; //so grava apos saber que o numero introduzido e diferente de 99
    if (aux<0 || aux>20)
    writelnString("Configuração incorrecta: "); //dá erro e repete o ciclo, o numero introdozido nao e guardado e pede um novo
    } while (aux<0 || aux>20);

    }
    return i; //a variavel <i> vai ser guardada no cont. <i> é o numero de alunos que tu meteste = tamanho do array
    }

    static void listar(int lista[], int cont) //chamas o numero total de alunos introduzidos ao fazeres "int cont"
    {
    int i;
    for (i=0; i<cont; i++) // i<cont, o i vai ate ao numero de alunos que meteste e depois para.
    {
    writeInt(a);
    }
    }

    Espero ter ajudado
     
    Última edição: 18 de Janeiro de 2008

Partilhar esta Página