Ir ao conteúdo
  • Cadastre-se

Java Matriz para > , < e md altura , sexo,


Ir à solução Resolvido por AdrianoSiqueira,

Posts recomendados

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

public class altsexo_2 {

	double altura [] = new double [10];
	int sexo[]; 
	int i;
	double maiorAlt = 0;
	double menorAlt = altura[0];
	double media = 0, somaAltura = 0;
	
	public void insereInfo()
	
	{
		
		for (i = 0; i < altura.length - 1; i++)
			
		{ 
			String alt = "Digite a alt";
			String sex = "Digite: \n 1 - para sexo Masc \n 2 - para sexo Fem";
			altura[i] = Double.parseDouble(JOptionPane.showInputDialog(null,alt));
			somaAltura += altura[i];
			sexo [0] = Integer.parseInt(JOptionPane.showInputDialog(null,sex));
		
		
		}
		JTextArea outputTextArea = new JTextArea();
		JTextArea outputTextArea1 = new JTextArea();
		
		outputTextArea.setText("Indice\tAltura\tSexo\n");
		
		for(i = 0 ; i < altura.length - 1 ; i++)
		{
			outputTextArea.append(i + "\t" + altura[i] + "\t" + sexo + "\n");
		}
		
		JOptionPane.showMessageDialog(null,outputTextArea,"Demonstrativo 1",
				JOptionPane.INFORMATION_MESSAGE);
		
		for(i = 0 ; i < altura.length - 1 ; i++)
		{
			if(altura[i] > maiorAlt)
			{
				maiorAlt = Math.max(maiorAlt,altura[i]);
			}				
		
		}
			
		for(i = 0 ; i < altura.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);					
        }

		

}

Preciso arrumar esta matriz!!!

Não consigo apontar a maior e menor altura do grupo;

      a média de altura dos homens;

       o número de mulheres.

Obrigadíssima!!!!

Link para o comentário
Compartilhar em outros sites

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

public class altsexo_2 {

	double altura[] = new double[10];
	int sexo[] = new int[10]; 
	double maiorAlt = 0;
	double menorAlt = 10000;
	double media = 0, somaAltura = 0;
	
	public void insereInfo()
	
	{
		
		for (int i = 0; i < altura.length - 1; i++)
			
		{ 
			String alt = "Digite a alt";
			String sex = "Digite: \n 1 - para sexo Masc \n 2 - para sexo Fem";
			altura[i] = Double.parseDouble(JOptionPane.showInputDialog(null,alt));
			somaAltura += altura[i];
			sexo [i] = Integer.parseInt(JOptionPane.showInputDialog(null,sex));
		
		
		}
		JTextArea outputTextArea = new JTextArea();
		JTextArea outputTextArea1 = new JTextArea();
		
		outputTextArea.setText("Indice\tAltura\tSexo\n");
		
		for(int i = 0 ; i < altura.length - 1 ; i++)
		{
			outputTextArea.append(i + "\t" + altura[i] + "\t" + sexo + "\n");
		}
		
		JOptionPane.showMessageDialog(null,outputTextArea,"Demonstrativo 1",
				JOptionPane.INFORMATION_MESSAGE);
		
		for (int i = 0 ; i < altura.length - 1 ; i++)
		{
			if(altura[i] > maiorAlt)
			{
				maiorAlt = altura[i];
			}				
            if(altura[i] < menorAlt)
			{
				menorAlt = altura[i];
			}	
		
		}
			
		
		double media = somaAltura/altura.length;
		
	  
	    JOptionPane.showMessageDialog(null,"Maior altura: " + maiorAlt + "\n" 
			+ "Menor altura: " + menorAlt + "\n" + "Altura média: " + media + "\n");
			
		System.exit(0);					
        }

		

}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Problemas:

  • Você não inicializou o vetor sexo, por isso está lançando NullPointerException.
  • Declarou a variável media como atributo da classe, depois declarou novamente dentro do método insereInfo.
  • Você declarou duas variáveis do tipo JTextArea, a menos que você esteja desenvolvendo uma interface gráfica, essas variáveis não vão servir de nada.
  • Declare a variável de controle dos loops, dentro do próprio loop, assim evita eventuais problemas.
  • Todos os laços for estão errados, eles não percorrem todos os elementos por causa do '-1'.
  • No primeiro laço for você errou o índice do vetor sexo, colou '0' onde deveria ser 'i'.
  • No segundo for você não informou o índice do vetor sexo que quer pegar os dados.
  • Nos laços for para achar a maior e menor altura, não precisa da classe Math porque você já tem o if. A classe Math vai adulterar o resultado.
  • As variáveis de maior e menor altura não podem ser inicializadas antes do vetor possuir dados, senão existe a chance da condição não ser satisfeita.

Convenção

  • Por convenção, nome de classe deve começar com letra maiúscula.

Dica

  • Quando sua variável se referir a um conjunto de dados, procure dar nomes no plural.
  • Procure declarar uma variável por linha, mais do que isso não agrega nada no código e pode dificultar o entendimento do mesmo.
  • Tente separar as funcionalidades do seu código em métodos, assim fica mais fácil de desenvolver, testar e corrigir eventuais problemas.
  • Crie uma variável para conter a quantidade de itens dos vetores, isso melhora a legibilidade do código.

Seu código com algumas correções:

public class App {

    int quantidade = 3;

    double[] altura     = new double[quantidade];
    int[]    sexo       = new int[quantidade];
    double   menorAlt   = 0.0;
    double   maiorAlt   = 0.0;
    double   media      = 0.0;
    double   somaAltura = 0.0;

    public void insereInfo() {

        for (int i = 0; i < altura.length; i++) {
            String alt = "Digite a alt";
            String sex = "Digite: \n 1 - para sexo Masc \n 2 - para sexo Fem";
            altura[i] = Double.parseDouble(JOptionPane.showInputDialog(null, alt));
            somaAltura += altura[i];
            sexo[i] = Integer.parseInt(JOptionPane.showInputDialog(null, sex));
        }

        JTextArea outputTextArea  = new JTextArea();
        JTextArea outputTextArea1 = new JTextArea();

        outputTextArea.setText("Indice\tAltura\tSexo\n");

        for (int i = 0; i < altura.length; i++) {
            outputTextArea.append(i + "\t" + altura[i] + "\t" + sexo[i] + "\n");
        }

        JOptionPane.showMessageDialog(null, outputTextArea, "Demonstrativo 1",
                                      JOptionPane.INFORMATION_MESSAGE);

        maiorAlt = altura[0];

        for (int i = 1; i < altura.length; i++) {
            if (altura[i] > maiorAlt) {
                maiorAlt = altura[i];
            }
        }

        menorAlt = altura[0];

        for (int i = 1; i < altura.length; i++) {
            if (altura[i] < menorAlt) {
                menorAlt = altura[i];
            }
        }

        media = somaAltura / quantidade;

        JOptionPane.showMessageDialog(null,
                                      "Maior altura: " + maiorAlt + "\n" +
                                      "Menor altura: " + menorAlt + "\n" +
                                      "Altura média: " + media + "\n");

        System.exit(0);
    }
}

 

  • Curtir 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

28 minutos atrás, Flávio Pedroza disse:
import javax.swing.JOptionPane;
import javax.swing.JTextArea;

public class altsexo_2 {

	double altura[] = new double[10];
	int sexo[] = new int[10]; 
	double maiorAlt = 0;
	double menorAlt = 10000;
	double media = 0, somaAltura = 0;
	
	public void insereInfo()
	
	{
		
		for (int i = 0; i < altura.length - 1; i++)
			
		{ 
			String alt = "Digite a alt";
			String sex = "Digite: \n 1 - para sexo Masc \n 2 - para sexo Fem";
			altura[i] = Double.parseDouble(JOptionPane.showInputDialog(null,alt));
			somaAltura += altura[i];
			sexo [i] = Integer.parseInt(JOptionPane.showInputDialog(null,sex));
		
		
		}
		JTextArea outputTextArea = new JTextArea();
		JTextArea outputTextArea1 = new JTextArea();
		
		outputTextArea.setText("Indice\tAltura\tSexo\n");
		
		for(int i = 0 ; i < altura.length - 1 ; i++)
		{
			outputTextArea.append(i + "\t" + altura[i] + "\t" + sexo + "\n");
		}
		
		JOptionPane.showMessageDialog(null,outputTextArea,"Demonstrativo 1",
				JOptionPane.INFORMATION_MESSAGE);
		
		for (int i = 0 ; i < altura.length - 1 ; i++)
		{
			if(altura[i] > maiorAlt)
			{
				maiorAlt = altura[i];
			}				
            if(altura[i] < menorAlt)
			{
				menorAlt = altura[i];
			}	
		
		}
			
		
		double media = somaAltura/altura.length;
		
	  
	    JOptionPane.showMessageDialog(null,"Maior altura: " + maiorAlt + "\n" 
			+ "Menor altura: " + menorAlt + "\n" + "Altura média: " + media + "\n");
			
		System.exit(0);					
        }

		

}

 

então fiz a alteração. Mas, não aparece ainda a média, a maior altura, a menor altura  e o número de mulheres

Link para o comentário
Compartilhar em outros sites

  • Solução

Segue uma possível solução usando Stream:

import java.util.Arrays;
import java.util.DoubleSummaryStatistics;
import java.util.random.RandomGenerator;

public class NollyApp implements Runnable {

    private static final int QUANTIDADE = 10;

    @Override
    public void run() {
        double[] alturas = new double[QUANTIDADE];
        int[]    sexos   = new int[QUANTIDADE];

        RandomGenerator generator = RandomGenerator.getDefault();

        for (int i = 0; i < QUANTIDADE; i++) {
            // Gera alturas entre 1.75 e 1.90
            alturas[i] = generator.nextDouble(1.75, 1.91);

            // Gera sexos entre 1 e 2
            sexos[i] = generator.nextInt(1, 3);
        }

        // Obtém estatísticas automaticamente através de Stream
        DoubleSummaryStatistics estatisticas = Arrays.stream(alturas)
                                                     .summaryStatistics();

        // Exibe o relatório
        System.out.println("Alturas: " + Arrays.toString(alturas));
        System.out.println("  Sexos: " + Arrays.toString(sexos));

        System.out.println("Maior altura: " + estatisticas.getMax());
        System.out.println("Menor altura: " + estatisticas.getMin());
        System.out.println("Média altura: " + estatisticas.getAverage());
    }
}

 

E uma usando métodos convencionais:

import java.util.Arrays;
import java.util.Scanner;

public class NollyApp implements Runnable {

    private static final int QUANTIDADE = 3;

    private double acharMaiorAltura(double[] alturas) {
        double resultado = alturas[0];

        for (double altura : alturas) {
            if (altura > resultado) {
                resultado = altura;
            }
        }

        return resultado;
    }

    private double acharMenorAltura(double[] alturas) {
        double resultado = alturas[0];

        for (double altura : alturas) {
            if (altura < resultado) {
                resultado = altura;
            }
        }

        return resultado;
    }

    private double calcularMediaAltura(double[] alturas) {
        double resultado = 0.0;

        for (double altura : alturas) {
            resultado += altura;
        }

        return resultado / alturas.length;
    }

    @Override
    public void run() {
        Scanner scanner = new Scanner(System.in);

        double[] alturas = new double[QUANTIDADE];
        int[]    sexos   = new int[QUANTIDADE];

        for (int i = 0; i < QUANTIDADE; i++) {
            System.out.print("Digite a altura: ");
            alturas[i] = scanner.nextDouble();

            System.out.print("Digite o sexo [ 1 -> F / 2 -> M ]: ");
            sexos[i] = scanner.nextInt();
        }

        double maiorAltura = acharMaiorAltura(alturas);
        double menorAltura = acharMenorAltura(alturas);
        double mediaAltura = calcularMediaAltura(alturas);

        System.out.println("alturas = " + Arrays.toString(alturas));
        System.out.println("  sexos = " + Arrays.toString(sexos));

        System.out.println("maiorAltura = " + maiorAltura);
        System.out.println("menorAltura = " + menorAltura);
        System.out.println("mediaAltura = " + mediaAltura);
    }
}

 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

Em 26/02/2022 às 22:08, AdrianoSiqueira disse:

Problemas:

  • Você não inicializou o vetor sexo, por isso está lançando NullPointerException.
  • Declarou a variável media como atributo da classe, depois declarou novamente dentro do método insereInfo.
  • Você declarou duas variáveis do tipo JTextArea, a menos que você esteja desenvolvendo uma interface gráfica, essas variáveis não vão servir de nada.
  • Declare a variável de controle dos loops, dentro do próprio loop, assim evita eventuais problemas.
  • Todos os laços for estão errados, eles não percorrem todos os elementos por causa do '-1'.
  • No primeiro laço for você errou o índice do vetor sexo, colou '0' onde deveria ser 'i'.
  • No segundo for você não informou o índice do vetor sexo que quer pegar os dados.
  • Nos laços for para achar a maior e menor altura, não precisa da classe Math porque você já tem o if. A classe Math vai adulterar o resultado.
  • As variáveis de maior e menor altura não podem ser inicializadas antes do vetor possuir dados, senão existe a chance da condição não ser satisfeita.

Convenção

  • Por convenção, nome de classe deve começar com letra maiúscula.

Dica

  • Quando sua variável se referir a um conjunto de dados, procure dar nomes no plural.
  • Procure declarar uma variável por linha, mais do que isso não agrega nada no código e pode dificultar o entendimento do mesmo.
  • Tente separar as funcionalidades do seu código em métodos, assim fica mais fácil de desenvolver, testar e corrigir eventuais problemas.
  • Crie uma variável para conter a quantidade de itens dos vetores, isso melhora a legibilidade do código.

Seu código com algumas correções:

public class App {

    int quantidade = 3;

    double[] altura     = new double[quantidade];
    int[]    sexo       = new int[quantidade];
    double   menorAlt   = 0.0;
    double   maiorAlt   = 0.0;
    double   media      = 0.0;
    double   somaAltura = 0.0;

    public void insereInfo() {

        for (int i = 0; i < altura.length; i++) {
            String alt = "Digite a alt";
            String sex = "Digite: \n 1 - para sexo Masc \n 2 - para sexo Fem";
            altura[i] = Double.parseDouble(JOptionPane.showInputDialog(null, alt));
            somaAltura += altura[i];
            sexo[i] = Integer.parseInt(JOptionPane.showInputDialog(null, sex));
        }

        JTextArea outputTextArea  = new JTextArea();
        JTextArea outputTextArea1 = new JTextArea();

        outputTextArea.setText("Indice\tAltura\tSexo\n");

        for (int i = 0; i < altura.length; i++) {
            outputTextArea.append(i + "\t" + altura[i] + "\t" + sexo[i] + "\n");
        }

        JOptionPane.showMessageDialog(null, outputTextArea, "Demonstrativo 1",
                                      JOptionPane.INFORMATION_MESSAGE);

        maiorAlt = altura[0];

        for (int i = 1; i < altura.length; i++) {
            if (altura[i] > maiorAlt) {
                maiorAlt = altura[i];
            }
        }

        menorAlt = altura[0];

        for (int i = 1; i < altura.length; i++) {
            if (altura[i] < menorAlt) {
                menorAlt = altura[i];
            }
        }

        media = somaAltura / quantidade;

        JOptionPane.showMessageDialog(null,
                                      "Maior altura: " + maiorAlt + "\n" +
                                      "Menor altura: " + menorAlt + "\n" +
                                      "Altura média: " + media + "\n");

        System.exit(0);
    }
}

 

Fiz às correções, mas, sabe , ajudou-me muito quando você acusou os erros, porque enxerguei perfeitamente. Obrigadíssima. você realmente é muito gentil!!!!

 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!