Armazenamento no array[resolvido]

9 respostas
Paulo_Mour

Boa tarde,

Alguém poderia me tirar uma dúvida ? deu em branco e não estou conseguindo ver o erro. Na classe abaixo o usuário deve digitar a altura e esta altura deve aparecer na tela antes do cálculo da média, e não estou conseguindo armazená-la(os cálculos finais são apresentados.

Abs,

import javax.swing.JOptionPane;
import javax.swing.JTextArea;

public class Alunos
{
	String alunos[] = new String[6];
	double altura[] = new double[6];
	int sexo;
	int i;
	double maiorAlt = 0;
	double menorAlt = Double.MAX_VALUE;
	double media = 0, somaAltura = 0;
	
	public void insereInfo()
	{		
				
		for(i = 0 ; i < alunos.length - 1 ; i++)
		{
			String nome = "Digite o nome do aluno";
			String alt = "Digite a altura";
			String sex = "Digite:\n 1 - para sexo Masculino\n 2 - para sexo feminino";
			alunos[i] = JOptionPane.showInputDialog(null,nome);
			altura[i] = Double.parseDouble(JOptionPane.showInputDialog(null,alt));
			somaAltura += altura[i];
			sexo = Integer.parseInt(JOptionPane.showInputDialog(null,sex));
			
		}											
			JTextArea outputTextArea = new JTextArea();
			JTextArea outputTextArea1 = new JTextArea();
			
			outputTextArea.setText("Indice\tNome\tAltura\tSexo\n");
			
			for(i = 0 ; i < alunos.length - 1 ; i++)
			{
				outputTextArea.append(i + "\t" + alunos[i] + "\t" + altura[i] + "\t" + sexo + "\n");
			}
			
			JOptionPane.showMessageDialog(null,outputTextArea,"Demonstrativo 1",
					JOptionPane.INFORMATION_MESSAGE);
			
			for(i = 0 ; i < alunos.length - 1 ; i++)
			{
										
				if(altura[i] > maiorAlt)
				{
					maiorAlt = Math.max(maiorAlt,altura[i]);
				}				
			
			}
				
			for(i = 0 ; i < alunos.length - 1 ; i++)
			{										
				if(altura[i] < menorAlt)
				{
					menorAlt = Math.min(menorAlt,altura[i]);
				}				

			}
			double media = somaAltura/i;
			
			JOptionPane.showMessageDialog(null,"Maior altura: " + maiorAlt + "\n" 
				+ "Menor altura: " + menorAlt + "\n" + "Altura média: " + media + "\n");
				
			System.exit(0);					
	}
	
}
public class AlunosTest
{
	public static void main( String[] args )
	{
		Alunos executa = new Alunos();
				
		executa.insereInfo();
		
	}
	
}

9 Respostas

R

não entendi muito bem, mas tenta isto aqui:

alunos[i] ...;
altura[i] ...;

JOptionPane.showMessageDialog(null, "altura:" + altura[i]); // ,-- ve se isto que vc quer
Paulo_Mour

Eu quero que, quando acabar de digitar os dados(nome, altura e sexo) o programa me forneça um resumo com os dados que digitei. Após isto, ele me dá a maior altura, a menor e a média da altura. Na realidade ele está me dando estas informações mas na apresentação dos dados ele está apresentando a última altura digitada.

R

bom testei seu código e só percebi um erro na hora de mostrar a menor altura. A menorAlt esta com um valor muito baixo, o melhor a fazer é setar a primeira altura como menorAlt
e depois percorrer o vetor das alturas

//tipo:
menorAlt = altura[0];
//depois percorre seu for normal, assim vai mostrar o menor valor

só percebi este erro apenas

R

em seu código, nos laços vc pode tirar o alunos.length - 1, não precisa colocar o -1 pois vc esta colocando i < alunos.length , quando vc coloca o -1 é como se vc perdesse praticamente 2

e na média vc pode fazer media = somaAltura/alunos.length;

Paulo_Mour

Na realidade informei errado(este era um outro problema que corrigi). Após digitar o sexo do último aluno, o programa apresenta a tabela com o mesmo sexo para todos eles. Este é o erro.

romarcio

Se quer ordenar, poderia usar então uma lista do tipo:

List<String> stringList = new ArrayList<String>();
        stringList.add("a");
        stringList.add("f");
        stringList.add("c");

        //ordena do menor de a-z ou 0 - 9
        Collections.sort(stringList);
        for (String s : stringList)
            System.out.println(s);

Você não precisaria usar array e a lista pode inclusive ser do tipo do seu objeto: List<Alunos> …

Paulo_Mour

Srs. consegui. Agradeço a atenção e pronta resposta de todos.

Abs,

R

blz só falando, sexo tem que ser um array tb.

Paulo_Mour

Tem razão. Só percebi depois e corrigi.

Abs,

Criado 22 de outubro de 2010
Ultima resposta 25 de out. de 2010
Respostas 9
Participantes 3