Assunto de static em programa simples

2 respostas
G

Fiz este codigo aqui de baixo, mas ele ta dando um erro Dizendo non-static method orde(int[]) cannot be referenced from a static context

Não sei que seria isso realmente…

public class Desafio2 {
	public static void main(String args[]){
	
	int v[] = new int[9];
 		//Um array array[3] guarda dados de 0 a 2, ou seja, não cabe 4 valores.
 		int pe[] = new int[4];
 		int pd[] = new int[4];
 		int maior = 0;
 		int pos = 0;
 		
 	
 
 	    System.out.println("Imprime os numeros gerados aleatoriamente no vetor"); 
 		for(int i=0;i<9;i++){
 			v[i] = (int) (1 + Math.random() * 100);
 			System.out.print(" "+v[i]);
 		}
 		System.out.println("\n");
 		
 		//Encontra maior
 		for(int i=0;i<9;i++){
 			if (v[i] > maior) {
 				maior = v[i];
 				//armazena qual é a posição do array em que está o maior
 				pos = i;
 			} 			
 		}
 		
 		//Coloca o maior valor dentro da posicao 4.
 		if (pos != 4){
 			int temp = v[4];
 			v[4]=v[pos];
 			v[pos]=temp;
 		
 		}
 		
 		//Carrega primeira metade no array PE
 		for(int i=0;i<4;i++){
 			pe[i] = v[i];
 	
 		
 			
 		}
 		
 		//Carrega segunda metade no array PD
 		for(int i=0;i<4;i++){
 			pd[i] = v[i+5];
 			orde(pd);
 		
 				
 		}
 		
 		
 		System.out.println("Impressão do vetor com o maior numero no meio");
 		for(int h=0; h<v.length;h++){
 		System.out.print(" "+v[h]);
 		}
 
 		
 		System.exit(0);

  }
  
 	   public void orde(int b[]){
 	  
 	     for(int p=1; p<b.length; p++)
 	  	  for(int i = 0; i<b.length-1; i++)
 	  	   if(b[i]>b[i+1])
 	  	     troca(b,i,i+1); 
 	  	   
 	}
 
 		public void troca(int c[], int f, int s){
 			
 		 int aux;
 		 aux = c[f];
 		 c[f]=c[s];
 		 c[s]=aux;
 		}
}

Alguem saberia onde posso arrumar isso?

2 Respostas

E

Um método declarado static não pode acessar membros de classe não-static, porque um método static pode ser chamado mesmo quando nenhum objeto da classe foi instanciado, seu erro é o seguinte:
vc está chamando os métodos orde e troca pra dentro do main sem cria o objeto da classe vc tem duas opções ou muda a assinatura do método ou criar um objeto da classe

R

public static void orde …

public static void troca …

Criado 14 de abril de 2007
Ultima resposta 16 de abr. de 2007
Respostas 2
Participantes 3