Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

habitat

[Resolvido] Exercicio Java para iniciantes. (ajuda)

Recommended Posts

habitat

Boa tarde , Sou aluno do 1º ano de Eng informatica .

Comecei a tentar resolver alguns exercicios de java (basicos)

Um dos exercicios que apanhei foi este:

Escreva um programa em Java que leia as alturas dos alunos de uma turma

com 20 alunos e determine quantos são baixos (menos de 1,55 m), quantos são

de altura média (entre 1,55 m e 1,70 m) e quantos são altos.

Como no meu entender não é suposto o programa pedir ao utilizador as alturas da turma, decidi criar 20 variaveis entre 1,50 e 1,90 .

Concerteza haverá um metodo mais comodo de arranjar 20 variaveis, do que andar a escrever

double a = 1.52
double b = 1.89
double c = ....

Por ai em diante....

A minha primeira questão é exactamente saber qual é a forma mais inteligente de o fazer .

A minha segunda questão é perceber como é que depois de ter as 20 variaveis, vou conseguir que o programa compare todas as variaveis existentes com as alturas definidas no enunciado .

espero nao ter sido confuso .

obrigado.

Share this post


Link to post
Share on other sites
HappyHippyHippo

tens razão, existe uma maneira bem mais simples do que ter 20 variáveis ...

é ter uma que guarda 20 valores:

double alturas[20]; // <--- array/lista de 20 valores de virgula flutuante

depois é só aceder a cada uma:

alturas[0] = 2; // <--- primeiro elemento, índice 0
alturas[1] = 3; // <--- segundo elemento, índice 1
...
alturas[19] = 5; // <--- último/vigésimo elemento, índice 19

como não queres ter n linhas de código "quase" igual umas a seguir à outras, usas um ciclo:

for (int i = 0; // iniciar uma variável interna do ciclo com o valor de 0
    i < 20;    // executar o código do ciclo enquanto o valor da variável "i" for inferior a 20
    i++)       // incrementar o valor da variável "i" em uma unidade após cada execução do ciclo
{
 alturas[i] = 34; // atribuir o valor ao elemento de índice "i"
}

o mesmo pode ser aplicado à leitura : tratar muitos elementos de uma vez = ciclo

  • Vote 1

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
habitat

Agradeço imenso a prontidão em responder .

Eu uso o netbeans , pelo que eu percebi : tenho que incializar um array com 20 possiveis valores

double alturas [20];

.

Posteriormente a cada entrada da lista atribuir valores :

alturas[0] = 1.59;
alturas[1] = 1.90;
.......
alturas [19] = 1.80.

Tenho andando a investigar o porque do erro na seguinte parte do codigo :

double alturas [20];

Mas nao consigo deslindar o caso .

Segundo o IDE : Uncompilable source code - variable alturas might not have been initialized

O que é que está a falhar?

Peço desculpa pelo incomodo .

------------------------------------------------------------------------------------------------------------------------------------------------------------

double[ ] alunos;
alunos = new double[10];

Consegui resolver o problema desta maneira

Que diferença faz

alunos = new double[10];

?

Edited by habitat

Share this post


Link to post
Share on other sites
HappyHippyHippo

ok ... esse é um ponto um bocado complicado, vamos ver se consigo responder claramente

a instrução

double alturas[20];

é uma variável que define uma lista de valores, mas o problema é que não reserva memória para esses valores.

é como se fosse : "um mapa para os valores, mas não tens o caminho físico"

é necessário reservar a memória para os elementos:

double alturas[20] = new double[20]; // <-- dizer ao sistema para reservar os 20

Edited by HappyHippyHippo
  • Vote 1

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.