Vetor em java

12 respostas Resolvido
java7java
J

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);
}

}

12 Respostas

wldomiciano

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.

J

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.

wldomiciano

É 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?
J

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.

wldomiciano

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.

J

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!!

Fefo80

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.

J

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);
}

}

RoinujNosde

Você inverteu os valores aqui.

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

Fefo80
Solucao aceita
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();
J

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

Fefo80

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

Criado 25 de junho de 2021
Ultima resposta 28 de jun. de 2021
Respostas 12
Participantes 4