Como faço para extrair um numero do vetor

4 respostas
E

Esotu com um problema eu fiz um programa que acha o maior numero no vetor e mostra sozinho e depois tem que mostrar todos os numeros so que sem o maior …
Naum consigo mostar todos sem o maior com eu faço…

import javax.swing.*;

public class exercicio1 {

public static void main(String arg[]) {
	
	int i;
	int a;
	int maior=0;
	
	a=Integer.parseInt(JOptionPane.showInputDialog("Digite a quantidade de numeros a serem inseridos"));
	
   	int b[] = new int [a];    	        
for(i = 0 ; i < b.length ; i++){
	b[i] = Integer.parseInt(JOptionPane.showInputDialog("Digite o valor"));
	
        if(maior < b [i]){
            
            maior = b[i];            
        } 
         
}
    
         System.out.println("O maior numero da serie é " + maior); 
         
}

4 Respostas

H

Uma idéia bem simples seria guardar a posição do maior e fazer dois loops. Por exemplo:

import javax.swing.*; 

public class exercicio1 { 

public static void main(String arg[]) { 

int i; 
int a; 
int maior=0; 
int pos=-1; //para guardar a posição do maior



a=Integer.parseInt(JOptionPane.showInputDialog("Digite a quantidade de numeros a serem inseridos")); 

int b[] = new int [a]; 
for(i = 0 ; i < b.length ; i++){ 
b[i] = Integer.parseInt(JOptionPane.showInputDialog("Digite o valor")); 

if(maior < b [i]){ 
maior = b[i]; 

//pega a posição do maior
pos = i;
} 

} 

System.out.println("O maior numero da serie é " + maior); 
//para imprimir
for (int i = 0; i < pos; i++){
  System.out.println(b[i]); 

for (int i = pos + 1; i < b.length; i++){
  System.out.println(b[i]); 

}

Espero ter ajudado…

PS.: Sempre post seus códigos entre as tags

S

Achei bacana o codigo postado pelo hadilson, mas há um pequeno problema no codigo,

for (int i = pos + 1; i < b.length; i++){ System.out.println(b[i]); }

nesta parte do codigo caso o maior numero tenha sido digitado por ultimo, nada sera impresso e caso nao seja o ultimo o snumero q estao antes do maior digitado nao estao sendo apresentados.

b[pos] = b[b.length-1];

for (int i = 0; i < b.length-1; i++){  
        System.out.println(b[i]);   
}

ou caso precise imprimir na ordem;

for (int i = 0; i < b.length; i++){  
        if(i != pos)
                System.out.println(b[i]);   
}

eduardoalvessilva isso nao e um vetor, em java isso e um array, um vetor em java e uma Collection, no vetor realmente o corre a remoção de um elemento, no casso deste array nao estamos removendo nada apenas nao estamos imprimindo o maior valor.

Valeu.

J
...
for(i = 0 ; i &lt b.length ; i++){    
   b[i] = Integer.parseInt(JOptionPane.showInputDialog("Digite o valor")); 
   if(maior &lt b [i]){    
      maior = b[i];    
      //pega a posição do maior   
      pos = i;   
   }
}

System.out.println("O maior numero da serie é " + maior);  

for (int x = 0; x &lt b.length; x++) {
   if (x != pos)
      System.out.println("&gt&gt " + b[x]);  
}
H

SlashJava,

Não sei se entendi direito, mas você disse que se o número fosse o último, nada seria impresso?

Não sei se você percebeu, mas é por isso que existem dois loops (a idéia é bem tosca mesmo…rsrs).

//aqui eu imprimo todos os que estão ANTES do maior
for (int i = 0; i < pos; i++){   
  System.out.println(b[i]);    
  
//aqui eu imprimo todos os que estão DEPOIS  do maior
for (int i = pos + 1; i < b.length; i++){   
  System.out.println(b[i]);
}

jricardo_so, SlashJava,

Também pensei na opção:

//de jricardo_so
for (int x = 0; x < b.length; x++) {   
   if (x != pos)
      System.out.println(">> " + b[x]);
}

que é semanticamente igual a

//de SlashJava
for (int i = 0; i < b.length; i++){     
        if(i != pos)   
                System.out.println(b[i]);      
}

Mas não a utilizei, porque a acada iteração, além de verificar a condição do loop, ainda seria necessário verficar a condição do if. Ou seja, embora mais “tosca”, a opção dos dois loops requer um número aparentemente menor de instruções para ser executado.

Resumindo, são muitas opções prá se fazer a mesma coisa… como tudo em java, como tudo em programação…rsrs

Ah, e achei bacana a obserção sobre vetores e arrays… quem está acostumado com C, acha que tudo é uma coisa só (meu caso!)

té mais…

Criado 28 de agosto de 2007
Ultima resposta 29 de ago. de 2007
Respostas 4
Participantes 4