Vetor em java

meu professor pediu pra fazer essa atividade, mas não consigo ver se ta certo e tem alguns erros que nao consigo achar. algu´´em tem alguma dica??
Faça um programa que peça ao usuário para informar o tamanho do vetor (quantidade de posições). Em seguida, peça para que o usuário informe valores inteiros que serão inseridos no vetor. Após o vetor ser preenchido, mostre na tela:

  • o conteúdo do vetor
  • o maior elemento do vetor
  • o menor elemento do vetor
  • a média de todos os elementos do vetor
  • o vetor ordenado de forma crescente

package exc5;

import java.util.Scanner;

public class Exc5 {

public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
System.out.println("Digite o tamanho do vetor");

    int tam = teclado.nextInt();
    int vetor []   = new int[tam];
    int maior = -99999, menor = 99999;
    int media;
    int soma = 0;
           
 for( int i = 0; i < vetor.length; i++ ){
     System.out.println(" informe valores inteiros: " );
     vetor [ i ] = teclado.nextInt();
 
 }
   for( int i = 0; i < vetor.length; i++){
     System.out.print(vetor[i] + " ");
     } 
    System.out.println("  ");
  

 for( int i = 0; i < vetor.length;  i++ ){
    if (vetor[i] > maior){
    maior = maior + vetor [i];  
 if (vetor[i] > menor){
    menor = menor + vetor [i];  
 }  }   }

for( int i = 0; i < vetor.length; i++ ){
if(vetor [i] < vetor [tam]) {
int aux = vetor[i];
vetor[tam]= vetor[i];
vetor[tam] = aux;
}
}
int quantidade = 0;
int media;
media = soma / tam;
System.out.println("a média de todos os elementos do vetor é " + media);

}

}

Alguns pontos que vi de errado:

  • Vc declarou a variável media 2 vezes
  • Vc usou vetor[tam] em vários lugares do seu código. Isso dá erro porque se tam for 3, os indices de vetor vão de 0 até 2 apenas.

Não tá errado, mas poderia melhorar:

  • Ao invés de usar os valores -99999 e 99999, vc poderia usar Integer.MAX_VALUE e Integer.MIN_VALUE
  • Declarar arrays como vc fez (int vetor[]) não está errado, mas por uma questão de estilo, em Java, nós colocamos os colchetes logo após o tipo e antes do nome, assim: int[] vetor.

Eu faria algo assim:

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

class Programa {
  private static final Scanner scan = new Scanner(System.in);

  private static int media(int[] numeros) {
    int total = 0;

    for (int i = 0; i < numeros.length; i++) {
      total += numeros[i];
    }

    return total / numeros.length;
  }

  private static void imprime(int[] numeros) {
    for (int i = 0; i < numeros.length; i++) {
      System.out.print(numeros[i] + " ");
    }

    System.out.println();
  }

  public static void main(String... args) {
    System.out.println("Qual a quantidade de elementos?");

    final int quantidade = scan.nextInt();

    final int[] numeros = new int[quantidade];

    for (int i = 0; i < quantidade; i++) {
      numeros[i] = scan.nextInt();
    }

    imprime(numeros);

    // Organiza vetor
    Arrays.sort(numeros);

    imprime(numeros);

    System.out.println("Média: " + media(numeros));
    System.out.println("Menor: " + numeros[0]);
    System.out.println("Maior: " + numeros[quantidade - 1]);
  }
}

No caso eu não precisei criar as variáveis maior e menor como vc fez porque depois que vc organiza o vetor, vc já sabe que o primeiro elemento será o menor e o último será o maior.

Eu tirei proveito do método Arrays.sort, mas dependendo que o seu professor quer, pode ser que vc tenha que implementar algum algoritmo de ordenação que ele tenha ensinado.

EDIT: Acabei de ver que já tinham respondido esta mesma pergunta aqui: Vetor em Java. Pode ser que seja bom olhar as resposta lá também.

oii, obrigada por sua ajuda!!
eu vi a resposta da mesma pergunta mas tem algumas coisas que ainda não estudei nela, eu fiz as alteraçoes que voce falou que estava errado e que poderia melhorar. Mas continua dando erro.

É importante vc passar a informação completa. Quando vc diz “continua dando erro” é quase impossivel de entender.

  • Continua dando qual erro?
  • Que mensagem aparece?
  • É durante a compilação ou durante a execução do programa?
  • Vc está submetendo o código para alguma plataforma tipo Codewars ou algo assim?

ele apresenta os vetores na ordem que digitei, mas na hora de mostrar o menor, maior e media do vetor ele para de rodar durante a execuçao do programa.
estou usando o netbeans.

Nossa, pior é que é sem mensagem nenhuma.

Pior que eu testei antes de publicar e testei agora de novo e não consegui identificar esta falha e a IDE não deveria ser relevante, deveria rodar normalmente em qualquer lugar.

Quais números vc tá usando? Eu fiz testes usando apenas números inteiros menores que 10.

tambem usei números inteiros e sempre coloco o vetor pequeno pra nao dificultar na tarefa mas sempre apresenta o erro, acho que vou mandar assim mesmo pra o professor, mesmo que esteja dando erro ele nao pode falar que eu nao tentei. kkkk Obrigada por sua ajuda!!

1 curtida

Peguei o tópico pela metade, não sei exatamente o código que você concluiu.

Então posta aqui o código completo, última atualização sua, pra gente dar uma nova analisada.

Obrigado.

package exc5;

import java.util.Scanner;

public class Exc5 {

public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
System.out.println("Digite o tamanho do vetor");

    int tam = teclado.nextInt();
    int [] vetor   = new int[tam];
    int maior = Integer.MAX_VALUE, menor = Integer.MIN_VALUE;
    int media;
    int soma = 0;
           
 for( int i = 0; i < vetor.length; i++ ){
     System.out.println(" informe valores inteiros: " );
     vetor [ i ] = teclado.nextInt();
 
 }
   for( int i = 0; i < vetor.length; i++){
     System.out.print(vetor[i] + " ");
     } 
  
    System.out.println("  ");

 for( int i = 0; i < vetor.length;  i++ ){
    if (vetor[i] > maior){
    maior = maior + vetor [i];  
 if (vetor[i] > menor){
    menor = menor + vetor [i];  
 }  }   }

for( int i = 0; i < vetor.length; i++ ){
if(vetor [i] < vetor [tam]) {
int aux = vetor[i];
vetor[tam]= vetor[i];
vetor[tam] = aux;
}
}
int qteNumerosDigitados = 0;
for (int i = 0; i < qteNumerosDigitados; i++) {
for (int j = 0; j < qteNumerosDigitados; j++) {
if (vetor[i] < vetor[j]) {
int auxiliarDeTrocas = vetor[i];
vetor[i] = vetor[j];
vetor[j] = auxiliarDeTrocas;
}
}
}

    for (int i = 0; i < qteNumerosDigitados; i++) {
        System.out.println(vetor[i]);
    }
    int quantidade = 0;

    media = soma / tam;
  System.out.println("a média de todos os elementos do vetor é " + media);
    System.out.println("o maio valor do vetor " + maior);
    System.out.println(" menor valor do vetor " + menor);  System.out.println("a média de todos os elementos do vetor é " + media);
}

}

Você inverteu os valores aqui.

Por que está somando? É só atribuir o valor.

1 curtida
    Scanner teclado = new Scanner(System.in);
    System.out.print("Digite o tamanho do vetor: ");

    int tam = teclado.nextInt();
    int[] vetor = new int[tam];
    int maior = Integer.MIN_VALUE;
    int menor = Integer.MAX_VALUE;
    double media = 0;

    for (int i = 0; i < vetor.length; i++) {
        System.out.print("Informe o " + (i+1) + "º valor inteiro: ");
        vetor[i] = teclado.nextInt();
    }
    
    System.out.print("\nVetor digitado: ");
    
    for (int i = 0; i < tam; i++) {
        System.out.print(vetor[i] + " ");
    }


    for (int i = 0; i < tam; i++) {
        if (vetor[i] > maior) {
            maior = vetor[i];
            if (vetor[i] < menor) {
                menor = vetor[i];
            }
        }
    }
    
    System.out.println("\nMaior: " + maior);
    System.out.println("Menor: " + menor);
    
    for (int i = 0; i < vetor.length; i++) {
        media += vetor[i];
    }
    
    media = media / tam; 

    for (int i = 0; i < tam; i++) {
        for (int j = 0; j < tam; j++) {
            if (vetor[i] < vetor[j]) {
                int auxiliarDeTrocas = vetor[i];
                vetor[i] = vetor[j];
                vetor[j] = auxiliarDeTrocas;
            }
        }
    }

    System.out.println("A média de todos os elementos do vetor é: " + media);
    System.out.println("O maio valor do vetor: " + maior);
    System.out.println("O menor valor do vetor: " + menor);
    
    System.out.print("Vetor ordenado: ");
    
    for (int i = 0; i < tam; i++) {
        System.out.print(vetor[i] + " ");
    }
    
    teclado.close();

Deu super certo, obrigada por sempre responder minhas postagens. :black_heart:

Quando tiver mais experiência, lembre de voltar aqui no fórum para ajudar os novatos.