Olá, sou iniciante em java e em programação, tenho a seguinte questão sobre Vetor: ? Escreva um algoritmo que leia um vetor de 10 posições e mostre-o ordenado em
ordem crescente.
Segue o código que elaborei, ficou bastante confuso e está dando erro na hora de imprimir na ordem crescente, se algúem poder ajudar fico muito grato.
[code]import java.util.Scanner;
public class Exercicio10 {
public static void main(String [] args){
int maior = -2147483648;
int nums[] = new int[10];
int cont = 0;
int aux2 = 0;
int aux = 0;
Scanner Var = new Scanner(System.in);
for(int i = 0; i < 10; i ++){
System.out.println("Digite o numero: ");
nums[i] = Var.nextInt();
}
for(int i = 0; i < 10; i ++){
for(int j = 0; j < 10; j ++){
if(nums[j] > maior){
maior = nums[j];
cont = j;
}
}
if(i >= 5 ){
aux = nums[i];
aux2 = nums[cont];
nums[cont] = nums[i];
nums[i] = aux2;
nums[cont] = aux2;
if( i == 9){
System.out.println(aux+".");
break;
}
System.out.print(aux+ ", ");
}else{
aux = nums[cont];
aux2 = nums[i];
nums[i] = nums[cont];
nums[cont] = aux2;
nums[i] = aux2;
System.out.print(aux+ ", ");
maior = -2147483648;
}
}
}
eu não olhe seu código, mas lhe digo. Quando dizemos que nosso código está gerando uma exceção, o correto é que postemos ela.
Sendo assim, poste para que possamos analisar.
Um adendo, se estiver ocorrendo uma ArrayIndexOutBoundException, é porque está acessando uma posição inexistente do vetor, assim:
int[] vet = new int[] {1, 2};
vet[2];
‘vet’ é de tamanho 2, mas suas posições são: 0 e 1, portanto, acessar a posição 2 iria gerar uma exceção.
Abraços.
uma olhada rápida no seu código achei vários erros:
1°por que vc está criando esse tanto de variáveis?
2°no algoritmo de seleção por ordenação vc compara cada membro do vetor com todos os outros…então pq vc está comparando com uma variável?
o correto seria assim né?
[code]
for(int i = 0; i < 10; i ++){
for(int j = 0; j < 10; j ++){
if(nums[i] > nums[j]){
aux=nums[i];
nums[i]=nums[j];
nums[j]=aux;
}
}
}[/code]
3° que POG foi esse ae que vc utilizou pra mostrar os elementos?
vc só precisa fazer isso:
for(int i = 0; i < 10; i ++){
System.out.print(nums[i]+ ", ");
}
Consegui arrumar meu código, foi mais simples do que eu penssava, ficou bem assim.
[code]import java.util.Scanner;
public class Exercicio10 {
public static void main(String [] args){
int nums[] = new int[10];
int aux = 0;
Scanner Var = new Scanner(System.in);
for(int i = 0; i < 10; i ++){
System.out.println("Digite o numero: ");
nums[i] = Var.nextInt();
}
// lendo valores digitados
//ordenando o vetor
for(int i = 0; i < 10; i ++){
for(int j = i +1; j < 10; j ++){
if(nums[j] > nums[i]){
aux = nums[i];
nums[i] = nums[j];
nums[j] = aux;
}
}
}
// mostrando o vetor
for(int i = 0; i < 10; i ++){
System.out.print(nums[i] + " ," );
}
}