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 {
publicstaticvoidmain(String[]args){Scannerteclado=newScanner(System.in);System.out.println("Digite o tamanho do vetor");inttam=teclado.nextInt();intvetor[]=newint[tam];intmaior=-99999,menor=99999;intmedia;intsoma=0;for(inti=0;i<vetor.length;i++){System.out.println(" informe valores inteiros: ");vetor[i]=teclado.nextInt();}for(inti=0;i<vetor.length;i++){System.out.print(vetor[i]+" ");}System.out.println(" ");for(inti=0;i<vetor.length;i++){if(vetor[i]>maior){maior=maior+vetor[i];if(vetor[i]>menor){menor=menor+vetor[i];}}}
for(inti=0;i<vetor.length;i++){if(vetor[i]<vetor[tam]){intaux=vetor[i];vetor[tam]=vetor[i];vetor[tam]=aux;}}intquantidade=0;intmedia;media=soma/tam;System.out.println("a média de todos os elementos do vetor é "+media);
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:
importjava.util.Arrays;importjava.util.Scanner;classPrograma{privatestaticfinalScannerscan=newScanner(System.in);privatestaticintmedia(int[]numeros){inttotal=0;for(inti=0;i<numeros.length;i++){total+=numeros[i];}returntotal/numeros.length;}privatestaticvoidimprime(int[]numeros){for(inti=0;i<numeros.length;i++){System.out.print(numeros[i]+" ");}System.out.println();}publicstaticvoidmain(String...args){System.out.println("Qual a quantidade de elementos?");finalintquantidade=scan.nextInt();finalint[]numeros=newint[quantidade];for(inti=0;i<quantidade;i++){numeros[i]=scan.nextInt();}imprime(numeros);// Organiza vetorArrays.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
Jhennyf
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.
W
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
Jhennyf
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.
W
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
Jhennyf1 like
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!!
F
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
Jhennyf
package exc5;
import java.util.Scanner;
public class Exc5 {
publicstaticvoidmain(String[]args){Scannerteclado=newScanner(System.in);System.out.println("Digite o tamanho do vetor");inttam=teclado.nextInt();int[]vetor=newint[tam];intmaior=Integer.MAX_VALUE,menor=Integer.MIN_VALUE;intmedia;intsoma=0;for(inti=0;i<vetor.length;i++){System.out.println(" informe valores inteiros: ");vetor[i]=teclado.nextInt();}for(inti=0;i<vetor.length;i++){System.out.print(vetor[i]+" ");}System.out.println(" ");for(inti=0;i<vetor.length;i++){if(vetor[i]>maior){maior=maior+vetor[i];if(vetor[i]>menor){menor=menor+vetor[i];}}}
for(inti=0;i<qteNumerosDigitados;i++){System.out.println(vetor[i]);}intquantidade=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);}
}
R
RoinujNosde1 like
Você inverteu os valores aqui.
Por que está somando? É só atribuir o valor.
F
Solucao aceita
Fefo80
Scannerteclado=newScanner(System.in);System.out.print("Digite o tamanho do vetor: ");inttam=teclado.nextInt();int[]vetor=newint[tam];intmaior=Integer.MIN_VALUE;intmenor=Integer.MAX_VALUE;doublemedia=0;for(inti=0;i<vetor.length;i++){System.out.print("Informe o "+(i+1)+"º valor inteiro: ");vetor[i]=teclado.nextInt();}System.out.print("\nVetor digitado: ");for(inti=0;i<tam;i++){System.out.print(vetor[i]+" ");}for(inti=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(inti=0;i<vetor.length;i++){media+=vetor[i];}media=media/tam;for(inti=0;i<tam;i++){for(intj=0;j<tam;j++){if(vetor[i]<vetor[j]){intauxiliarDeTrocas=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(inti=0;i<tam;i++){System.out.print(vetor[i]+" ");}teclado.close();
J
Jhennyf
Deu super certo, obrigada por sempre responder minhas postagens.
F
Fefo80
Quando tiver mais experiência, lembre de voltar aqui no fórum para ajudar os novatos.